首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java中的DayLight保存时间问题结束

问java中的DayLight保存时间问题结束
EN

Stack Overflow用户
提问于 2013-05-21 23:32:53
回答 3查看 1.2K关注 0票数 1

我试着找出夏令时是如何工作的,因为我写了关于夏令时的代码样本,我想知道为什么TimeZone在凌晨1:00改变,根据我对夏令时的理解,2013年11月3日凌晨2:00,所以在凌晨2:00AM它应该给出1:00AM,然后TimeZone应该被更改,但它不是这样的。有没有人能帮我解决这个问题...

代码语言:javascript
复制
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()));
}

输出:

代码语言:javascript
复制
03-11-13 00:59:59 PDT
03-11-13 01:00:00 PST
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-21 23:44:35

01:00发生两次,一次在PDT中,一次(一小时后)在PST中。

如果您告诉Calendar现在是时间更改日期的01:00,那么该类识别出您的输入对应于两个不同的可能时间,并任意使用其中一个。

票数 3
EN

Stack Overflow用户

发布于 2013-05-22 00:15:06

@Andrew Spencer是对的,凌晨1点有两种可能性,Calendar选择了其中的一种,只是不是你想要的。如果你想看到1:00 AM PDT,那么只需在12:59 AM增加一分钟:

代码语言:javascript
复制
  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.add(Calendar.MINUTE, 1);  // this will still be in PDT
    System.out.println(fmt.format(cal.getTime()));
  }
票数 3
EN

Stack Overflow用户

发布于 2013-05-21 23:39:47

如果我没理解错的话,你可能想知道为什么03-11-13 01:00:00是PST?我想你自己已经解释过了。如果2:00实际上必须移到1:00,那么1:00已经是夏令时,即PST。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16673860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档