gpt4 book ai didi

java - 将 UTC 时间戳转换为其他时区特定时间

转载 作者:行者123 更新时间:2023-12-02 02:59:34 24 4
gpt4 key购买 nike

我正在处理需要将 UTC 时间戳转换为其他区域特定时间戳的要求。下面是不同时区的列表。

CET UTC+0100  
CST UTC+0800
CST UTC-0600
EST UTC-0500
IST UTC+0530
MET-1METDST
SGT UTC+0800
SST-8


public static String convertUTCTimeStampToOtherZoneTimestamp(Timestamp timestamp,String timeZone){
String zoneSpecificTimeStamp="";
try {
DateFormat gmtFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TimeZone zoneTime = TimeZone.getTimeZone(timeZone);
gmtFormat.setTimeZone(zoneTime);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String inputDateString = sdf.format(timestamp);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
zoneSpecificTimeStamp=gmtFormat.format(sdf.parse(inputDateString));
} catch (ParseException e) {
e.printStackTrace();
return zoneSpecificTimeStamp;

}
return zoneSpecificTimeStamp;
}

上面的代码对于 EST、PST、IST 等时区工作正常,但对于列表中提到的其他时区,程序给出错误的结果。请向我更新正确的解决方案

最佳答案

您只能使用全名或带有偏移量的 GMT。

ID - the ID for a TimeZone, either an abbreviation such as "PST", a full name such as "America/Los_Angeles", or a custom ID such as "GMT-8:00". Note that the support of abbreviations is for JDK 1.1.x compatibility only and full names should be used.

https://docs.oracle.com/javase/8/docs/api/java/util/TimeZone.html#getTimeZone-java.lang.String-


对于您提供的所有时区,您可以通过两种方式传递给该方法。

GMT 偏移

只需将字符串作为“GMT {offset}”传递示例:

“GMT+0800”而不是“CCST UTC+0800”

“GMT-0600”而不是“CST UTC-0600”

等等...

缩写(不推荐)

或者只是传递您也有的缩写:

“CST” 而不是 “CST UTC+0800”

“EST”而不是“EST UTC-0500”

注意

尽管示例中使用的缩写似乎有效,但文档指出要使用全名,因为缩写只是为了兼容性。

关于java - 将 UTC 时间戳转换为其他时区特定时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42540893/

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