首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有不同TImeZone的SameTime

具有不同TImeZone的SameTime
EN

Stack Overflow用户
提问于 2012-11-22 16:05:32
回答 1查看 61关注 0票数 1

为什么程序用不同的TimeZone打印相同的输出/时间

代码语言:javascript
复制
    Calendar cal = GregorianCalendar.getInstance();
    TimeZone timeZone_1 = TimeZone.getTimeZone("Asia/Rangoon");
    cal.setTimeZone(timeZone_1);
    System.out.println(cal.getTime());

    TimeZone timeZone_2 = TimeZone.getTimeZone("Asia/Tokyo");
    cal.setTimeZone(timeZone_2);
    System.out.println(cal.getTime());

输出示例:

代码语言:javascript
复制
Thu Nov 22 09:00:33 MMT 2012
Thu Nov 22 09:00:33 MMT 2012        

我的预期输出是:

代码语言:javascript
复制
Thu Nov 22 09:00:33 MMT 2012
Thu Nov 22 11:30:33 MMT 2012
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-22 16:06:56

你的代码没有问题,只是调试输出是错误的(误导性的)。cal.getTime()返回Date对象,独立于时区。但是Date.toString()总是打印带有系统时区的日期。Date.toString()是如此违反直觉(它以系统时区显示日历时间,而它几乎不存储毫秒数),以至于它应该被禁止/弃用。

要获得准确的日志记录,请使用SimpleDateFormat或调用各种Calendar.get*()方法:

代码语言:javascript
复制
System.out.println(cal.get(Calendar.HOUR_OF_DAY));
System.out.println(cal.get(Calendar.MINUTE));

对于任何关于Java日期/时间处理的问题,请考虑jodatime...

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

https://stackoverflow.com/questions/13508226

复制
相关文章

相似问题

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