繁体   English   中英

显示每个时区的时间

[英]Display time per timezone

我试图显示每个时区的当前时间,如下所示,但它不会按预期打印出时间。

long currentLong = System.currentTimeMillis();
TimeZone.setDefault(TimeZone.getTimeZone("EST"));
System.out.println("EST=="+ new java.util.Date(currentLong).toString());

TimeZone.setDefault(TimeZone.getTimeZone("CST"));
System.out.println("CST=="+ new java.util.Date(currentLong).toString());

TimeZone.setDefault(TimeZone.getTimeZone("MST"));
System.out.println("MST=="+ new java.util.Date(currentLong).toString());

TimeZone.setDefault(TimeZone.getTimeZone("PST"));
System.out.println("PST=="+ new java.util.Date(currentLong).toString());

TimeZone.setDefault(TimeZone.getTimeZone("AST"));
System.out.println("AKST=="+ new java.util.Date(currentLong).toString());

TimeZone.setDefault(TimeZone.getTimeZone("HST"));
System.out.println("HAST=="+ new java.util.Date(currentLong).toString());

当我执行程序时,我得到了这个:

EST==Sat Nov 03 22:24:02 EST 2012
CST==Sat Nov 03 22:24:02 CDT 2012
MST==Sat Nov 03 20:24:02 MST 2012
PST==Sat Nov 03 20:24:02 PDT 2012
AKST==Sat Nov 03 19:24:02 AKDT 2012
HAST==Sat Nov 03 17:24:02 HST 2012

我想知道为什么CST的时间与EST相同,MST和PST相同。

有人能告诉我问题是什么吗?

谢谢。

不要使用TimeZone.setDefault() ,使用Calendar.getInstance(TimeZone tz)Calendar.setTimeZone() Date已经过时, Calendar要好得多。

问题是,你使用的是错误的类。 当然,您永远不应该设置默认时区。

首先,默认时区是底层操作系统的时区。 可以在桌面应用程序中使用它,但它不会为您提供Web应用程序的有效时间。 在Web应用程序中,最好询问用户他/她的首选时区是什么。

现在,如果你想转换时区,它实际上很简单,但你必须使用正确的类。 正确的类是DateFormat

Date now = new Date();
// you need to detect locale somehow
// this way is valid with desktop applications only
Locale locale = Locale.getDefault(Locale.Category.FORMAT);
DateFormat df = DateFormat.getDateTimeInstance(
    DateFormat.DEFAULT, DateFormat.DEFAULT, locale);
TimeZone est = TimeZone.getTimeZone("EST");
TimeZone mst = TimeZone.getTimeZone("MST");

df.setTimeZone(est);
System.out.println(df.format(now));
df.setTimeZone(mst);
System.out.println(df.format(now));

至于时区是否相同,你可以随时询问它们的平等性:

System.out.println(est.equals(mst));

这些时区可能不同,但当前偏移量可能相同。 您可以查询偏移量是这样的

int estOffset = est.getOffset(now);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM