Jodatime 畸形即使它看起来正确
Jodatime malformation even if it looks correct
我有这段代码
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss Z");
DateTime dateNow = dtf.parseDateTime(new DateTime().toString());
String registerDateStr = dateNow.toString();
但是当我 运行 它时,它说格式错误的日期:
java.lang.IllegalArgumentException: Invalid format: "2019-06-13T17:57:47.420+08:00" is malformed at ".420+08:00"
形成的日期对我来说似乎是正确的?我是不是格式有问题?
您的格式没有指定毫秒,并且在时区信息之前有一个不需要的 space。
此格式适用:
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
结果不应该是
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
来自 javadoc,
Symbol Meaning Presentation Examples
------ ------- ------------ -------
H hour-of-day (0-23) number 0
m minute-of-hour number 30
s second-of-minute number 55
S fraction-of-second fraction 978
您的格式 yyyy-MM-dd'T'HH:mm:ss Z 无效,因为您遗漏了 S
(秒的小数部分,在您的字符串中显示为 .420)
你太辛苦了。您根本不需要任何显式格式化程序。
DateTime dateNow = new DateTime();
String registerDateStr = dateNow.toString();
System.out.println(registerDateStr);
我刚才运行时输出:
2019-06-13T13:04:48.301+02:00
如果你愿意,你也可以在没有格式化程序的情况下解析字符串,但我认为你没有理由这样做,因为你只会得到一个 DateTime
等于你开始的对象的对象:
DateTime parsedBack = DateTime.parse(registerDateStr);
System.out.println(parsedBack);
2019-06-13T13:04:48.301+02:00
你知道吗?
Note that Joda-Time is considered to be a largely “finished” project.
No major enhancements are planned. If using Java SE 8, please migrate
to java.time
(JSR-310).
我有这段代码
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss Z");
DateTime dateNow = dtf.parseDateTime(new DateTime().toString());
String registerDateStr = dateNow.toString();
但是当我 运行 它时,它说格式错误的日期:
java.lang.IllegalArgumentException: Invalid format: "2019-06-13T17:57:47.420+08:00" is malformed at ".420+08:00"
形成的日期对我来说似乎是正确的?我是不是格式有问题?
您的格式没有指定毫秒,并且在时区信息之前有一个不需要的 space。
此格式适用:
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
结果不应该是
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
来自 javadoc,
Symbol Meaning Presentation Examples
------ ------- ------------ -------
H hour-of-day (0-23) number 0
m minute-of-hour number 30
s second-of-minute number 55
S fraction-of-second fraction 978
您的格式 yyyy-MM-dd'T'HH:mm:ss Z 无效,因为您遗漏了 S
(秒的小数部分,在您的字符串中显示为 .420)
你太辛苦了。您根本不需要任何显式格式化程序。
DateTime dateNow = new DateTime();
String registerDateStr = dateNow.toString();
System.out.println(registerDateStr);
我刚才运行时输出:
2019-06-13T13:04:48.301+02:00
如果你愿意,你也可以在没有格式化程序的情况下解析字符串,但我认为你没有理由这样做,因为你只会得到一个 DateTime
等于你开始的对象的对象:
DateTime parsedBack = DateTime.parse(registerDateStr);
System.out.println(parsedBack);
2019-06-13T13:04:48.301+02:00
你知道吗?
Note that Joda-Time is considered to be a largely “finished” project. No major enhancements are planned. If using Java SE 8, please migrate to
java.time
(JSR-310).