如何使用timeoffset更改日期字符串的时间格式

h5qlskok  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(345)

这个问题在这里已经有答案了

奇怪的java时区日期转换问题(3个答案)
一年前关门了。
我正在尝试将日期字符串从java中的另一个时区转换为utc格式。我们只有像“-06:00”这样的时区偏移量。有谁能帮我用时区偏移量把日期时间转换成utc格式吗。
谢谢
这适用于java版本1.7。我尝试了以下代码段,但接收的输入与输出相同。

String dateInString = "02/04/2019 18:17:15";                
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = formatter.parse(dateInString);          
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");             
dateFormat.setTimeZone(TimeZone.getTimeZone("+5:30"));
String dateStr = dateFormat.format(date);
System.out.println(dateStr);

输出2019年4月2日18:17:15

carvr3hs

carvr3hs1#

不幸的是, TimeZone.getTimeZone(String ID) 退货:
指定的 TimeZone ,或gmt区域(如果无法理解给定的id)。
这个 "+5:30" 时区不可理解,所以你得到gmt。
更改为 "GMT+5:30" 将使您的代码工作,即它将打印:

02/04/2019 23:47:15

请参阅的javadoc TimeZone 为有效 ID 语法:
自定义时区id的语法为:

CustomID:
        GMT Sign Hours : Minutes
        GMT Sign Hours Minutes
        GMT Sign Hours
Sign: one of
        + -
Hours:
        Digit
        Digit Digit
Minutes:
        Digit Digit
Digit: one of
        0 1 2 3 4 5 6 7 8 9

如你所见,它必须总是从 GMT .

相关问题