java中的日期和时区
我目前正在阅读JSON格式的日期,如下所示:java中的日期和时区,java,date,datetime,timestamp,Java,Date,Datetime,Timestamp,我目前正在阅读JSON格式的日期,如下所示: "dates": { "startdate": "2017-08-29T22:00:00.000UTC"; } 在我的应用程序中,我将JsonFormat设置为如下,以便能够正确读取它: @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'UTC'") private Date startdate; 但是UTC不是我想要使用的时
"dates": {
"startdate": "2017-08-29T22:00:00.000UTC";
}
在我的应用程序中,我将JsonFormat设置为如下,以便能够正确读取它:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'UTC'")
private Date startdate;
但是UTC不是我想要使用的时区,我应该将“UTC”更改为什么才能读取我在欧洲/巴黎时区的日期时间?更改输入以符合ISO 8601标准。
Z
是祖鲁语的缩写,表示UTC
String input = "2017-08-29T22:00:00.000UTC".replace( "UTC" , "Z" ) ;
将其解析为即时
对象
Instant instant = Instant.parse( input ) ;
调整到你想要的时区
ZoneId z = ZoneId.of( "Europe/Paris" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;
避免使用
Date
类,因为这个麻烦的类现在已经被java.time类取代了。您希望2017-08-29T22:00
在巴黎时区,还是2017-08-29T22:00UTC
转换到巴黎(将2017-08-30T00:00+02:00
)?你在用杰克逊吗?或者其他图书馆?(这可能与解决方案相关)-顺便说一句,你不能忽略UTC,它与日期
对象相关(否则你可以得到不同的结果,这取决于你在忽略它之后做了什么)。不清楚你想实现什么,但你是否尝试过Z
或Z
,两者都只是表示时区?其中一个可能会做你想做的。