[英]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.