我正在尝试从 JavaScript 应用程序序列化/反序列化日期。
服务器端,我使用Java,上面安装了JodaTime。我发现了如何使用 UTC 时区序列化为 ISO,但无法找到如何进行反向操作。
这是我的代码
public static String getIsoDate( Date date )
{
SimpleDateFormat dateToIsoDateString = new SimpleDateFormat( ISO_8601_DATE_FORMAT );
TimeZone tz = TimeZone.getTimeZone("UTC");
dateToIsoDateString.setTimeZone( tz );
return dateToIsoDateString.format( date );
}
// this will return a date with GMT timezone
public static Date getDateFromIsoDateString( String iso8601date )
{
DateTimeFormatter jodaParser = ISODateTimeFormat.dateTimeNoMillis();
return jodaParser.parseDateTime( iso8601date ).toDate();
}
我不介意使用或不使用 Joda,只需要一个快速有效的解决方案,
原文由 Dimitri Kopriwa 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您使用的是 Java 7 或更早版本,您可以参考这篇 文章。
如果你使用的是 Java 8,你可以这样做:
更新
正如@BasilBourque 在评论中指出的那样, TemporalAccessor 是 java 框架级接口,不建议在应用程序代码中使用,建议使用具体类而不是接口。
有一些具体的类可供使用,如 LocalDate 、 LocalDateTime 、 OffsetDateTime 、 ZonedDateTime 等。