获取 Java 时区的夏令时转换日期

2023-12-27

我想知道在 Java 中最简单的方法来获取未来夏令时将发生变化的日期列表。

一种相当不优雅的方法是简单地迭代多年的日子,并根据 TimeZone.inDaylightTime() 测试它们。这会起作用,而且我不担心效率,因为这只需要在每次我的应用程序启动时运行,但我想知道是否有更简单的方法。

如果您想知道我为什么这样做,那是因为我有一个 JavaScript 应用程序需要处理包含 UTC 时间戳的第三方数据。我想要一种在客户端从 GMT 转换为 EST 的可靠方法。看Javascript -- Unix 时间到特定时区 https://stackoverflow.com/questions/1044000/javascript-unix-time-to-specific-time-zone我已经编写了一些 javascript 来完成此操作,但我想从服务器获取精确的转换日期。


乔达时间 http://joda-time.sourceforge.net/(一如既往)使这变得非常容易,因为DateTimeZone.nextTransition http://joda-time.sourceforge.net/api-release/org/joda/time/DateTimeZone.html#nextTransition(long)方法。例如:

import org.joda.time.*;
import org.joda.time.format.*;

public class Test
{    
    public static void main(String[] args)
    {
        DateTimeZone zone = DateTimeZone.forID("Europe/London");        
        DateTimeFormatter format = DateTimeFormat.mediumDateTime();

        long current = System.currentTimeMillis();
        for (int i=0; i < 100; i++)
        {
            long next = zone.nextTransition(current);
            if (current == next)
            {
                break;
            }
            System.out.println (format.print(next) + " Into DST? " 
                                + !zone.isStandardOffset(next));
            current = next;
        }
    }
}

Output:



25-Oct-2009 01:00:00 Into DST? false
28-Mar-2010 02:00:00 Into DST? true
31-Oct-2010 01:00:00 Into DST? false
27-Mar-2011 02:00:00 Into DST? true
30-Oct-2011 01:00:00 Into DST? false
25-Mar-2012 02:00:00 Into DST? true
28-Oct-2012 01:00:00 Into DST? false
31-Mar-2013 02:00:00 Into DST? true
27-Oct-2013 01:00:00 Into DST? false
30-Mar-2014 02:00:00 Into DST? true
26-Oct-2014 01:00:00 Into DST? false
29-Mar-2015 02:00:00 Into DST? true
25-Oct-2015 01:00:00 Into DST? false
...
  

使用 Java 8,您可以使用以下命令获取相同的信息ZoneRules http://docs.oracle.com/javase/8/docs/api/java/time/zone/ZoneRules.html以其nextTransition and previousTransition方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 Java 时区的夏令时转换日期 的相关文章

随机推荐

  • MySQL 限制、组和 AVG 查询

    这里有一个谜题给你 我将集群计算的统计数据保存在名为 jobs 的 MySQL 表中 每个作业行都有一个执行作业的主机 不是唯一的 以秒为单位的作业执行时间以及作为 PK 的唯一整数 因此我可以简单地通过订购 PK 来订购已完成的作业 截至
  • 使用“git svn clone”的SVN到Git导入问题

    当尝试在 Git 中导入我的 SVN 存储库时 使用以下命令 git svn clone s https xx xx xx xxx repo iphone project https xx xx xx xxx repo iphone pro
  • Chrome 自动填充涵盖了 Google Maps API v3 的自动完成功能

    我正在使用 Google Maps Javascript v3 在 HTML 输入字段上设置自动完成功能 如下所示 https i stack imgur com sbBKv png https i stack imgur com sbBK
  • 外键(class_id)未填充在belongs_to关联中

    我是 Rails 新手 正在 Rails3 beta4 上构建一个小型测试应用程序 我在用真实逻辑管理用户会话 以标准方式设置为根据本教程 http github com binarylogic authlogic example 我已经搭
  • Angular Mat-Table 完成渲染事件 / Mat Paginator 加载 Spinner

    我正在使用带有相当大的预查询数据源的角度材质表 现在 每次我使用内置分页器更改表格页面时 在呈现新表格行之前都会有一个短暂的延迟 并且我想同时显示一个加载微调器 问题是 当表页开始更改时 分页器只会触发一个事件 到目前为止 我没有找到解决方
  • cassandra-cli 在哪里

    我已经使用 docker 安装了 Cassandra 3 7 我正在读一本书 要求我运行一个名为 cassandra cli 的实用程序 但是当我做一个find name cassandra cli我在任何地方都找不到这个实用程序 你知道我
  • Java 错误 - net.ucanaccess.jdbc.UcanaccessSQLException:格式错误的字符串:'

    我在使用 uCanaccess 检索保存在桌面中的数据库时出现错误 我的代码如下 package Week11Package 导入java util Scanner 导入 java sql 公共类 dbTest1 static Scanne
  • 阻止 spring-data-rest 中的 HTTP 方法

    我正在使用 spring data rest 给出以下存储库 RepositoryRestResource public interface MyRepository extends PagingAndSortingRepository
  • 在 java 8 中使用正确的偏移量将 OffsetDateTime 转换为 LocalDateTime

    当我尝试转换时OffsetDateTime to LocalDateTime来自 java time 我期望结果LocalDateTime将更新为本地时区 所以 如果我有一个OffsetDateTime of 2011 12 03T10 0
  • 基于php的Photoeffects网站

    我想知道网站怎么样http photofunia com http photofunia com 并建立了其他在线照片效果网站 例如 使用php 我想将两个图像frame png与profile jpg合并 我希望我的frame png 透
  • 替换网站中的文本

    我正在寻找使用 JavaScript 替换网页 任何我想要运行它的网页 中的文本 我不是 JavaScript 专家 所以我有点迷失了 如果可以的话我想避免使用 jQuery 通过谷歌 我发现this https stackoverflow
  • 在sqlite中将int转换为real

    sqlite 中的除法返回整数值 sqlite gt select totalUsers totalBids from select select count from Bids as totalBids select count from
  • 获取javaFX 8中节点的屏幕坐标

    我正在 Windows 8 1 64 位上开发 JavaFX 应用程序 具有 4GB RAM 和 JDK 版本 8u45 64 位 我想使用捕获部分屏幕Robot但问题是我无法获取我想要捕获并且不想使用的锚点窗格的屏幕坐标snapshot因
  • 在图像悬停时显示播放图标

    目标 当我将鼠标悬停在 item 图像上时 我希望 play 图像出现在 item 图像 div 的中心 我做了以下事情 play img 与 itemImage img 重叠 HTML div class itemsContainer i
  • Java 的 BouncyCastle 并不总是验证 OpenSSL ECDSA 签名

    我使用 OpenSSL 在 C 中 对文本进行签名 但是我的 Java 程序并不总是验证签名消息 只有大约五分之一得到验证 有趣的是https kjur github io jsrsasign sample sample ecdsa htm
  • 为什么 .title(for: .normal) 对于 UIKit 中的 Plain 样式返回 nil

    我正在关注 Apple 的 Apple Pie 项目Swift 基础知识开发 https books apple com us book develop in swift fundamentals id1556365994书 第 333 3
  • HTML 登录表单:提供用户名、自动填充密码

    我需要一个登录表单 只需提供我的用户名 因为它会记住我的密码并自动填写密码字段 例如 像 gmail auth 一样 我怎样才能做到这一点 thanks Luca 提醒人们避免用头撞墙的注意事项 Chrome 不会在不受信任的网站上保存和建
  • python:带有字符串输入的调度方法

    我需要编写一个接受 3 个参数的方法 a string带有函数名称 一个有序的list该函数的参数 这包括具有默认值的参数和 varargs 但不包括 kwargs a dict表示任何附加关键字参数 或None如果没有 我需要使用此输入来
  • android-opencv 使用 matToBitmap/bitmapToMat 将 mat 转换为灰度

    我在 eclipse 中使用更新的 willowgarage opencv 库 我想将 mat 变量转换为灰度 我已经尝试了在网上找到的所有内容 但它们对我不起作用 这是我的代码 package com deneme deneme impo
  • 获取 Java 时区的夏令时转换日期

    我想知道在 Java 中最简单的方法来获取未来夏令时将发生变化的日期列表 一种相当不优雅的方法是简单地迭代多年的日子 并根据 TimeZone inDaylightTime 测试它们 这会起作用 而且我不担心效率 因为这只需要在每次我的应用