gpt4 book ai didi

关于时区的java日期转换混淆

转载 作者:行者123 更新时间:2023-11-29 05:43:31 24 4
gpt4 key购买 nike

我使用的是 Java 6。我们的服务器使用东部标准时间 (GMT-5),我正在尝试存储一个应该这样解释的值,但我对如何转换它感到困惑。我有

    String dateStr = "1368921600000";       // This is 5/19/2013 00:00:00
final Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("GMT-5"));
cal.setTimeInMillis(Long.parseLong(dateStr));
final java.util.Date dateObj = cal.getTime();
System.out.println(dateObj.toString());

但现在它打印出“2013 年 5 月 18 日星期六 19:00:00 CDT”(因为我的本地机器在 CDT 上)但我希望结果是“2013 年 5 月 18 日星期六 24:00:00 CDT”。我如何将日期字符串“1368921600000”解释为 EST 日期?谢谢,-戴夫

最佳答案

1368921600000 是时间上的一个瞬间,同一个瞬间,在世界各地。要将其转换为日期和时间,您必须在世界上的位置指定您想知道该瞬间的日期/时间。碰巧时间戳是相对于 UTC 的,Sun, 19 May 2013 00:00:00 GMT

如果您想要世界其他地方的这一时刻(同一时刻)的时间,您可以像以前一样使用日历并提取各个字段值(例如 HOUR_OF_DAY)。如果您只关心获取文本字符串,则可以使用 DateFormat 实例,例如 SimpleDateFormat:

DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z");
df.setTimeZone(TimeZone.getTimeZone("America/New_York"));
String timeOnUSEastCoast = df.format(new Date(1368921600000L));
// will be GMT-5 or GMT-4 depending on DST

在此示例中,输出将是 GMT-4:星期六,2013 年 5 月 18 日 20:00:00 EDT(不仅时间发生了变化,而且还是前一天 在美国东海岸)。

如果您想输出 UTC 时间但只是想假装它是 EST,那么告诉 DateFormat 在文本中省略时区字段(删除“z”)会更容易输出并随意调用它,但要了解时间戳值始终为 UTC。

关于关于时区的java日期转换混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16653003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com