当前位置: 首页 > 面试题库 >

时区,日历和SimpleDateFormat的奇怪问题

古文康
2023-03-14
问题内容

让我们考虑以下代码:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy", Locale.US);
long start = sdf.parse("10:30:00 30/09/2009").getTime();
long end = sdf.parse("10:30:00 30/10/2009").getTime();

Calendar c = Calendar.getInstance(Locale.US);
c.setTimeInMillis(start);
System.out.println("Start = " + c.getTime());
c.setTimeInMillis(end);
System.out.println("  End = " + c.getTime());

运行此代码段时,我将显示以下输出:

Start = Wed Sep 30 10:30:00 CEST 2009
  End = Fri Oct 30 10:30:00 CET 2009

为什么我会得到不同的时区?

请注意,如果我将8月的第一个日期设置为9月,将第二个日期设置为9月,则在两种情况下输出将显示相同的时区:

long start = sdf.parse("10:30:00 30/08/2009").getTime();
long end = sdf.parse("10:30:00 30/09/2009").getTime();

将显示:

Start = Sun Aug 30 10:30:00 CEST 2009
  End = Wed Sep 30 10:30:00 CEST 2009

我正在使用Java 1.6.0_14


问题答案:

CEST是中欧夏季时间。它CET与夏令时生效相同。



 类似资料:
  • 问题内容: 谁能解释为什么我在尝试解析日期时会得到这些值?我尝试了三种不同的输入,如下所示: 1)2013年第三周 哪个输出:(正如我预期的那样) 2)2013年第一周 哪个输出:(对我来说很好,因为2013年的第一周也是2012年的最后一个) 3)2013年第二周 哪个输出:(这对我来说绝对 没有 意义) 有谁知道为什么会这样吗?我需要解析格式为(一年中的一周)。(年)的日期。我使用的是错误的模

  • 我有以下代码: 假设我现在将电脑的时区设置为太平洋时间(PDT为UTC-7),则打印 2012年6月29日星期五08:15:00太平洋标准时间 PDT不是比IST(印度标准时间)晚12.5小时吗?这个问题在任何其他时区都不会发生-我尝试了UTC、PKT、MMT等,而不是日期字符串中的IST。Java中有两个IST吗? 注意:实际代码中的日期字符串来自外部源,因此我不能使用GMT偏移量或任何其他时区

  • 对于我的一个客户,我正在处理一些非常古老的日期,例如: 0572-06-17 1000-06-17 当我将字符串转换为日期时,它有一个奇怪的时区。例子: 你可以看到时区是00:17。为什么会出现这个奇怪的时区?

  • 在我从5个文档中取出任意两个文档后,DotCMIS调用停止响应。 //定义会话工厂SessionFactory factory=SessionFactory.newinstance(); //使用session factory获取默认存储库,我们将在该存储库上执行操作&在该存储库上创建session ISession session=factory.getRepositories(paramete

  • 我在单元测试下面的Spring MVC控制器方法: 上面的自定义注释()基本上是由以下方面建议的: 如果抛出了一个,则会启动以下控制器建议异常处理程序: 现在,以下是我如何尝试测试上述控制器方法: 测试系统地失败了,下面的堆栈跟踪: 我不确定我和莫奇托有什么问题... 注意,我确实在路径中指定了,这表明我的模拟应该在方面中返回true,并允许控制器方法继续。然而,事实并非如此。 谁能帮忙吗?

  • 我在使用Java8中的LocalDateTime时有点困惑。 null 有人能解释一下我的这种行为吗?这是意料之中的还是我做错了什么(或者我没有理解一些明显的事情:))?提前谢谢你帮助我。 编辑: 这个问题与相当古老的年份(1889)有关,但它是Excel中用于时间表示的年份。查看问题的代码示例:http://ideone.com/kahaaz