获取 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 时区的夏令时转换日期 的相关文章

  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List

随机推荐

  • 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 测试它们 这会起作用 而且我不担心效率 因为这只需要在每次我的应用