在java中将json日期转换为日期
如何将json日期转换为java.util.date在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日期
{"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
value2145805200000
并创建日期对象,如java.util.date(214580520000L)
就会给出相应的日期。由于代码> java .UTI.DATE < /C>是时区独立的,不需要考虑<代码> TimeZONEXPLOS