Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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中将json日期转换为日期_Java_Json_Date - Fatal编程技术网

在java中将json日期转换为日期

在java中将json日期转换为日期,java,json,date,Java,Json,Date,如何将json日期转换为java.util.date {"date":31,"day":4,"hours":0,"minutes":0,"month":11,"seconds":0,"time":2145805200000,"timezoneOffset":-420,"year":137} 感谢您的帮助通过快速的谷歌搜索,我找到了这个网页: 返回日期的“parse”方法向您展示了如何使用Java中的SimpleDateFormat类,该类用于将字符串解析为日期希望对您有所帮助 没有JSON日期

如何将json日期转换为java.util.date

{"date":31,"day":4,"hours":0,"minutes":0,"month":11,"seconds":0,"time":2145805200000,"timezoneOffset":-420,"year":137}

感谢您的帮助

通过快速的谷歌搜索,我找到了这个网页:
返回日期的“parse”方法向您展示了如何使用Java中的
SimpleDateFormat
类,该类用于将字符串解析为日期
希望对您有所帮助

没有JSON日期 没有JSON日期这样的事情。JSON有,没有一个与日期时间相关

从古至今 值为2145805200000的
time
项可能是一个计数。这两个问题是:什么时代?计数的粒度是多少

常用的是从1970年的第一刻起

java 8及更高版本中内置的java.time框架可以转换这样的数字。
Instant
类表示UTC时间轴上的一个时刻

long sinceEpoch = 2145805200000L;
Instant instant = Instant.ofEpochMilli ( sinceEpoch );
转储到控制台

System.out.println ( "instant: " + instant );
    System.out.println ( "instant: " + instant + " + zoneOffset: " + zoneOffset + " = zdt: " + zdt );
瞬间:2037-12-30T17:00:00Z

该值可能接近JSON中的其他字段,但并不完全匹配

您的JSON有一个值为
-420
的字段
timezoneOffset
。如果我们把这个数字理解为以分钟为单位的数字,那就意味着7小时。我们可以要求java.time将瞬间调整为这样的偏移量

通常,我们希望使用时区进行此调整。时区是UTC的偏移量加上一组处理异常(如夏令时(DST))的历史规则。但在这种情况下,我们只有UTC的偏移量。因此,我们使用子类
ZoneOffset
而不是使用
ZoneId
。结果是一个
ZonedDateTime

ZoneOffset zoneOffset = ZoneOffset.ofHours ( 7 );
ZonedDateTime zdt = ZonedDateTime.ofInstant ( instant , zoneOffset );
转储到控制台

System.out.println ( "instant: " + instant );
    System.out.println ( "instant: " + instant + " + zoneOffset: " + zoneOffset + " = zdt: " + zdt );
瞬间:2037-12-30T17:00:00Z+区域偏移:+07:00=zdt:2037-12-31T00:00+07:00

到2037年12月31日这一天的开始。仍然与其他JSON字段不完全匹配

但如果
-420
意味着比UTC晚7小时而不是提前7小时,我们需要将该偏移量从
7
小时更改为负
-7
小时。那么结果将是:

瞬间:2037-12-30T17:00:00Z+区域偏移:-07:00=zdt:2037-12-30T10:00-07:00


如果您对JSON数据了解得更多,那么也许可以找到一个解决方案。

您只需解析
time
value
2145805200000
并创建日期对象,如
java.util.date(214580520000L)
就会给出相应的日期。由于代码> java .UTI.DATE < /C>是时区独立的,不需要考虑<代码> TimeZONEXPLOS