如何分析这种格式
问题描述:
的乔达时间我在JSON转换DateString格式YYYY-mm-DD HH:MM:SS
和使用。当我转换POJO回JSON,日期是这样写2013-07-12T18:31:01.000Z
代码如何分析这种格式
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
this.startDate = format.parseDateTime(startDate);
坚持到POJO。
我们如何解析时间字符串2013-07-12T18:31:01.000Z
回到JodaDateTime对象。格式化程序应该是什么?
我用YYYY-mm-DD HH:MM:SS
,它没有工作
答
2013-07-12T18:31:01.000Z
它是标准的ISO日期时间格式。
您可以使用非标准乔达日期时间格式化ISODateTimeFormat::dateTime()
例子:
String startDate = "2013-07-12T18:31:01.000Z";
DateTime dt = ISODateTimeFormat.dateTime().parseDateTime(startDate);
在这种情况下日期时区将被转换为日期。
如果你想忽略你的时区,使用UTC
区在格式化:
String startDate = "2013-07-12T18:31:01.000Z";
DateTime dt = ISODateTimeFormat.dateTime().withZone(DateTimeZone.UTC).parseDateTime(startDate);
答
你应该追加X
您的模式。该SimpleDateFormat
API包含字段,你可以在DateFormat
使用,包括为X
“ISO 8601时区”的完整列表。
的ISO 8601的时区被指定为
模式字母的数目表示用于两个格式化的格式和解析如下:
ISO8601TimeZone: OneLetterISO8601TimeZone TwoLetterISO8601TimeZone ThreeLetterISO8601TimeZone OneLetterISO8601TimeZone: Sign TwoDigitHours Z TwoLetterISO8601TimeZone: Sign TwoDigitHours Minutes Z ThreeLetterISO8601TimeZone: Sign TwoDigitHours : Minutes Z
答
的API文档并不完全清楚:应该读
OneLetterISO8601TimeZone手段“X”和产量登录TwoDigitHours或Z,
因此类似-05
TwoLetterISO8601TimeZone意味着 'XX' 和产量拍TwoDigitHours分钟或Z,
因此像-0500
和ThreeLetterISO8601TimeZone意味着 'XXX' 和产量登录TwoDigitHours:分
因此类似-05:00
你为什么不使用'Date'代替格式化的日期?这将摆脱所有关于格式化的问题。您只能将日期格式化为字符串以显示给用户。处理日期时,软件不应该关心日期格式。 – m0skit0