Tag: dst

Oracle的日期和时间,不通过JDBC进行夏令时

发出以下SQL会通过PL / SQL,ODBC和JDBC生成不同的结果: select sysdate from dual 在PL / SQL或ODBC上运行时,日期和时间是正确的。 在JDBC上,它少了一个小时。 它似乎没有考虑夏令时。 例如,在PL / SQL上,结果是2012-11-05 16:53:53.0 ,在JDBC上,它是2012-11-05 15:53:53.0 。 它只发生在一些数据库上。 更改数据库时区( select dbtimezone from dual )似乎不会影响结果。 该命令正在巴西执行。 原始GMT偏移为-03:00,因为夏令时,当前偏移为-02:00。 客户端JVM的时区数据库是最新的。 要诊断数据库中的“错误”结果,只需打印结果: ((OracleResultSet) statement.executeQuery(“select sysdate from dual”)).getTIMESTAMP(1).toString(); Oracle的TIMESTAMP toString方法不依赖于时区信息。 JVM的时区可能仅在创建TIMESTAMP之前影响结果,即在从网络读取并将其转换为Java中的表示时。 测试更改客户端和数据库服务器时间配置: SYSDATE始终返回在数据库服务器中解析的日期/时间,客户端JVM的user.timezone选项和客户端的机器时间配置无关紧要。 另一方面,使用两个时区信息解析获取SYSTIMESTAMP :看起来它从UTC服务器获取日期和时间,然后在客户端中应用时区以获取本地日期和时间。 客户端运行Windows,服务器运行Linux。 为了让事情变得更奇怪,发出一个TO_CHAR也会产生错误的结果: select TO_CHAR(SYSDATE, ‘DD/MM/YYYY HH24:MI:SS’) from dual 直接在Oracle: 06/11/2012, 10:38:49 : 06/11/2012, […]

夏令时的持续时间

我有一个对象Shift ,有两个字段: startDateTime和endDateTime作为Joda-Time的DateTime 。 我的转变包括夏令时英国的变化。 它开始于25/03/2017 13:00 ,结束于26/03/2017 02:00 (基本上应该在26/03/2017 01:00结束,但这个日期不存在,并且endDate转移+1小时)。 根据这个网站 : 当地标准时间即将到达2017年3月26日星期日时,01:00:00时钟转发1小时至2017年3月26日星期日,当地白天时间02:00:00。 现在,如果我想跟踪一个员工的工作小时数new Duration(startDateTime, endDateTime).toStandardHours().getHours()将给我13个小时。 如何使用Joda-Time检测夏令时是否在我的class次持续时间内开始或结束?

Joda-Time,夏令时计算,时区独立测试

我们在应用程序中使用固定时间段。 当用户添加新的时段时,默认情况下应该是第二天的上午6:00到上午6:00。 通常情况下,它是24小时,但有一个问题:当执行夏令时更改时,该时间段的长度会发生变化。 例如 : 10月27日上午6:00至10月28日上午6:00。 在此期间执行从CEST到CET时区的转换。 因此,这个时期包含25个小时: From 27 October 6:00 AM to 28 October 3:00 AM – there are 21 hours at 3:00 am the time is shifted back by 1 hour, so there are 4 hours until 28 October 6:00 AM. 我们遇到了这个问题并尝试编写unit testing以防止它再次出现。 测试在我们的计算机上成功通过,但在CI服务器上失败(它在另一个时区)。 问题是:我们怎样才能独立于机器的时区设计我们的unit testing? 目前,小时跨度的计算是使用Joda-Time计算的: if ((aStartDate == null) || […]

使用Java日历时忽略DST

我有一个绘制时间序列图的GUI。 用户通过在文本框中输入值来输入他们想要绘制的日期。 例如,如果他们输入25/07/13 22:00和26/07/13 00:00 ,图表应绘制从25日22:00:00到次日早晨00:00:59的数据。 用户输入的时间被解析为Calendar对象。 我的问题来自DST。 用户不关心DST,因此他们想要看到的只是这两次之间的图表。 但是, Calendar对象确实关心DST,因此我的“to”日期当前不是00:00,而是01:00。 (我在伦敦,我们目前是格林威治标准时间+ 1小时的夏令时)。 我想有效地忽略DST,并且当我想绘制图形时,好像一切都是GMT + 0。 我怎样才能做到这一点?

Java日期和夏令时

我正在尝试使用for循环打印一天中的所有小时并递增Date对象。 但我不能拥有“Sun Mar 25 02:00:00”,我只有这些: Sun Mar 25 01:00:00 CET 2012 Sun Mar 25 03:00:00 CEST 2012 Sun Mar 25 03:00:00 CEST 2012 Sun Mar 25 04:00:00 CEST 2012 Sun Mar 25 05:00:00 CEST 2012 我对拥有TimeZone不感兴趣。 我认为问题是由于夏令时,但我需要“Sun Mar 25 02:00:00”。 如何创建该日期?

Java Date,使用特定日光模式渲染

我有一个Java Date ,从夏天开始,在夏令时期间。 例如: 2009年6月1日上午06:00太平洋时间 我的问题是,如何将此日期显示为当地时区和当前夏令时模式 (在我的太平洋标准时间内)? 2009年6月1日太平洋标准时间05:00 Java的Date.toString()和SimpleDateFormat以原始夏令时模式显示日期。 例: System.out.println(new Date(1243861200000L)); 输出: Mon Jun 01 06:00:00 PDT 2009 DateFormat dateFormat = new SimpleDateFormat(“MMM dd, yyyy hh:mm aa zzz”); dateFormat.setTimeZone(TimeZone.getTimeZone(“PST”)); System.out.println(dateFormat.format(new Date(1243861200000L))); 输出: 2009年6月1日上午06:00太平洋时间 我真正想看的是太平洋标准时间凌晨5点(相当于太平洋夏令时上午6点)。 有没有办法强迫它使用另一种夏令时模式? 跟进:顺便说一下,这是Windows XP的行为。 6月1日上午6点创建的文件(由资源管理器,命令提示符等)将在6月1日冬季凌晨5点出现。

亚利桑那州TimeZone日节省光

我想在特定时区获得当前时间。 我尝试了以下代码。 Calendar j = new GregorianCalendar(TimeZone.getTimeZone(“US/Mountain”)); j.setTimeInMillis(Calendar.getInstance().getTimeInMillis()); System.out.println(j.get(Calendar.HOUR_OF_DAY)+”:”+j.get(Calendar.MINUTE)); TimeZone tz = TimeZone.getTimeZone(“US/Mountain”); System.out.println(“tz.getRawOffset()”+tz.getRawOffset()/3600); System.out.println(tz.getDSTSavings()); System.out.println (tz.inDaylightTime(new Date())); 我得到的答案令人惊讶 – 16:57 – 错误1小时tz.getRawOffset() – 7000 3600000真实 – 为什么亚利桑那州的夏令时是真的? 如何获得凤凰城或美国任何其他城市的正确挂钟时间?

考虑夏令时,将本地时间转换为UTC时间,反之亦然

我知道如何将本地时间转换为UTC时间,反之亦然。 但是,在执行此操作时,我对夏令时(DST)处理非常困惑。 所以任何人都可以回答以下问题: 1.在时区之间转换时,java内部处理DST吗? 2.在时区之间转换时我需要做些什么? 3.更清楚地解释这个问题的任何好文章? 提前致谢。

JAVA TimeZone发行EDT Vs EST

我是java的新手,因此很长一段时间以来都无法解决这个问题。 我使用的是Windows XP,机器设置为TimeZone: Eastern Time(美国和加拿大) 。 我有一个Java应用程序,它获取当前系统时间和时区信息,并将如下字符串:20101012 15:56:00 EST写入文件。 上面的最后一条日期,即:时区,随着我改变系统日期,从EST变为EDT。 准确:从11月(例如:2009年11月)到3月(2010年3月),它是EST,否则是EDT。 EST是我想要的而不是EDT。 是否有任何特定的类/function,我总是可以将其作为EST读取? 等待回复。 谢谢你的回复。 好吧,我忘了提几件事。 我希望我的机器设置为:在Windows时区设置中的东部时间(美国和加拿大)。 简单来说,我想做的是:获取我的机器时间,并将其写入文本文件 我知道从3月到11月发生的夏令时。 但问题是,当我将机器时间写入文件时,如果夏令时(DST)不存在,则写为2010 01 12 15:56:00美国东部时间,如果夏令时为20101012 15:56:00当下。 我担心的是,无论是否是夏令时,我都想写EST。

Java夏令时的问题

我有一个需要了解时区的Java应用程序。 当我接受Unix纪元时间并尝试将其转换为用于Oracle SQL调用的时间戳时,它获得了正确的时区,但时区“useDaylightTime”值不正确,即它当前返回“true” ,当我们不在夏令时(我在佛罗里达州的TZ“America / New_York”)。 这是在Red Hat Linux Enterprise 6上运行的,据我所知,它已正确设置为时区,例如’date’返回:Wed Nov 28 12:30:12 EST 2012 我还可以看到,使用’zdump’实用程序,’isdst’的当前值为0。 我的Java版本是1.6.0_31。 我用谷歌搜索了这个并看到了它造成的众多问题,但是他们中的许多人只是简单地说要手动设置TZ,但我的问题不是TZ,而是默认TZ将“isDaylight”设置为’true’ 。 我相信这导致我的查询返回一小时关闭的数据(我可以看到它是)。 这是一个简单的代码片段,我试图以最简单的方式重现这个: public class TZdefault { public static void main(String[] args) throws IOException { long startTime = System.currentTimeMillis()/1000; Calendar start = Calendar.getInstance(); start.setTimeInMillis(startTime); start.setTimeZone(TimeZone.getDefault()); System.out.println(“Start UTC: ” + start + “ms: ” + start.getTimeInMillis()); System.out.println(“use […]