繁体   English   中英

使用 java 将字符串转换为日期而不更改字符串中的时区

[英]convert string to date without changing timezone in the string using java

我有一个包含时区的字符串,例如2020-11-12T12:00:00-0800 当我在 JAVA 时区自动更改为 IST 转换为日期时,有人可以帮忙吗? 提前致谢。

String s = '2020-11-12T12:00:00-0800'
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
date = format.parse(s);

只需省略字符串末尾的时区格式(字母Z )。 例如,这将打印Thu Nov 12 06:30:00 CET 2020

String s = "2020-11-12T6:30:00-0800";
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss");
var date = format.parse(s);
System.out.println(date);

但是,如果我在末尾添加字母Z ,它会在打印时解释给定的时区并将时间更改为我的本地时区。 所以这将打印Thu Nov 12 15:30:00 CET 2020

String s = "2020-11-12T6:30:00-0800";
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
var date = format.parse(s);
System.out.println(date);

更多关于模式的信息可以在SimpleDateFormat 的 JavaDoc 中找到。

要保留时区并移至新时区(自 Java 8 起)api java.time 您可以使用 ZonedDateTime

ZonedDateTime date = ZonedDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"));

那么结果是

String s = "2020-11-12T12:00:00-0800";
ZonedDateTime date = ZonedDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"));
System.out.println(date);

2020-11-12T12:00-08:00

暂无
暂无

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

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