gpt4 book ai didi

java - 将 IST/IST 时间转换为 UTC 时间

转载 作者:行者123 更新时间:2023-12-01 21:08:31 25 4
gpt4 key购买 nike

我正在尝试将 IDT 和 IST 日期解析为 UTC 中的 unixtime
例如:

Thu Sep 10 07:30:20 IDT 2016

对于这个日期,我想获取该日期的 Unix 时间,但时间为 04:30:20
如果是 IST,我希望在同一日期获得 05:30:20 的 unixtime

SimpleDateFormat formatter= new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
formatter.setTimeZone(TimeZone.getTimeZone("UTC");
System.out.println(formatter.parse(date).getTime())

我仍然得到 07:30:20 的 unixtime,而不是 05:30:20 或 04:30:20 (IST/IDT)

最佳答案

如果您想查看 UTC 格式的格式化结果,那么您需要第二个格式化程序,其模式和区域设置以及区域设置为 UTC:

String input1 = "Sat Sep 10 07:30:20 IDT 2016";
String input2 = "Sat Dec 10 07:30:20 IST 2016";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
Date d1 = sdf.parse(input1);
Date d2 = sdf.parse(input2);

SimpleDateFormat sdfOut =
new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
sdfOut.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println("IDT=>UTC: " + sdfOut.format(d1));
System.out.println("IST=>UTC: " + sdfOut.format(d2));

输出:

IDT=>UTC: Sat Sep 10 04:30:20 UTC 2016
IST=>UTC: Sat Dec 10 05:30:20 UTC 2016

解析格式化程序不需要设置特殊区域,因为您的输入包含相关区域信息。

旁注:解析像 IST 这样的时区缩写是危险的,因为该缩写有多种含义。您显然需要以色列时间,但 IST 通常被解释为印度标准时间。好吧,你很幸运,SimpleDateFormat - 符号“z”将其解释为 Israel Standard Time (至少在我的环境中适用于我)。如果您想确定“IST”的正确解释,那么您应该考虑切换库并在解析时设置您对以色列时间的首选项,例如在 Java-8 中:

DateTimeFormatterBuilder.setZoneText(TextStyle.SHORT, Collections.singleton(ZoneId.of("Asia/Jerusalem")))

关于java - 将 IST/IST 时间转换为 UTC 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41739637/

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