【问题标题】:Issues to get end DayLight Saving time结束夏令时的问题
【发布时间】:2013-05-16 06:00:19
【问题描述】:

我正在尝试检查夏令时,因为我使用的是美国时区。美国的夏令时于 2013 年 3 月 10 日凌晨 2:00 开始,并将于 2013 年 11 月 3 日凌晨 2:00 结束。所以我们必须在凌晨 2:00 将时钟提前 1 小时,当它结束时,必须在凌晨 2:00 将时钟提前 1 小时。我只是想检查 DST 结束时凌晨 2:00 的实际时间。它在 DST 开始时工作正常,但在 DST 结束时它不起作用。这是我尝试过的代码示例:

TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
Calendar cal =Calendar.getInstance();
if (TimeZone.getDefault().useDaylightTime())
{
for(int i = 0; i< 5 ; ++i)
{
     cal.set(2013,10,03,1,57+i,60);
     long timemillis = cal.getTimeInMillis();
     setCurrentTimeInMills(timemillis);
     String formatTime = Dateformated(timemillis);
     System.out.println(formatTime);
     }
}

输出如下:

03-11-2013 01:58:00 PST
03-11-2013 01:59:00 PST
03-11-2013 02:00:00 PST
03-11-2013 02:01:00 PST
03-11-2013 02:02:00 PST

我的 Java 版本:1.6.0_16。这里 Datformated() 是用户定义的函数,用于以可读格式查看时间,setCurrentTime() 也是用户定义的方法来设置当前时间。谁能帮我解释一下为什么凌晨 1:59:60 时间变成凌晨 2:00据我所知,应该改为凌晨 1:00?

【问题讨论】:

  • DateUtilDateformat 是什么?
  • 你能用 Joda Time 代替吗?这是一个更好的图书馆......
  • @assylias 现在你可以再次检查我为更好理解而编辑的代码
  • setCurrentTimeInMillsDateformated 是什么?显示代码。
  • 试试cal.set(2013,10,03,0,57+i,60);(小时 = 0 而不是 1)。

标签: java dst


【解决方案1】:

下面的代码显示了从 PDT 到 PST 的时区变化

public static void main(String[] args) throws InterruptedException {
    TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
    DateFormat fmt = new SimpleDateFormat("dd-MM-yy HH:mm:ss zz");

    Calendar cal = Calendar.getInstance();
    cal.set(2013, 10, 03, 0, 59, 59);
    System.out.println(fmt.format(cal.getTime()));

    cal.set(2013, 10, 03, 1, 0, 0);
    System.out.println(fmt.format(cal.getTime()));
}

输出:

03-11-13 00:59:59 PDT
03-11-13 01:00:00 PST

【讨论】:

  • 感谢您的回复,但我怀疑为什么时区在凌晨 1:00 从 PDT 更改为 PST,因为 DST 在凌晨 2:00 结束,根据我的理解应该是凌晨 1:00是 01:59:60。如果可能的话,你能解决我的疑问吗?
  • @JackNeil 我不确定是否诚实。您也许可以使用我的代码发布一个新问题,并解释您期望的输出而不是实际得到的输出(并将date 标签添加到该问题)。
  • 非常感谢您的建议。根据您的建议,我发布了一个新问题,希望这可以帮助我:)
猜你喜欢
  • 2013-05-16
  • 1970-01-01
  • 2016-01-28
  • 2017-03-14
  • 1970-01-01
  • 2013-11-15
  • 2012-11-16
  • 2015-06-07
  • 2011-11-20
相关资源
最近更新 更多