Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的日期和时区_Java_Date_Datetime_Timestamp - Fatal编程技术网

java中的日期和时区

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不是我想要使用的时

我目前正在阅读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不是我想要使用的时区,我应该将“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
,两者都只是表示时区?其中一个可能会做你想做的。