我的 Joda Time 格式模式是否不正确,无法在解析的 DateTime 输出中生成“T”和“Z”?
使用下面的 Joda Time 的模式语法,此输入字符串:
Sunday, January 09, 2011 6:15:00 PM
变为此日期时间:
2011-01-09T06:15:00.000Z
代码:
String start = "Sunday, January 09, 2011 6:15:00 PM";
DateTimeFormatter parser1 =
DateTimeFormat.forPattern("EEEE, MMMM dd, yyyy H:mm:ss aa");
DateTime startTime = parser1.parseDateTime(start);
此格式模式是否不正确?如果没有,T
和 Z
在 DateTime 输出中做什么?
2011-01-09T06:15:00.000Z
Using Joda Time's pattern syntax below, this input string:
Sunday, January 09, 2011 6:15:00 PM
becomes this datetime:
2011-01-09T06:15:00.000Z
Code:
String start = "Sunday, January 09, 2011 6:15:00 PM";
DateTimeFormatter parser1 =
DateTimeFormat.forPattern("EEEE, MMMM dd, yyyy H:mm:ss aa");
DateTime startTime = parser1.parseDateTime(start);
Is this format pattern incorrect? If not, what are the T
and Z
doing inside the DateTime output?
2011-01-09T06:15:00.000Z
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
T:表示字符串“时间部分”的开始。
区域:“Z”输出偏移。我想在这种情况下是格林威治标准时间。
资料来源:http://joda-time.sourceforge.net /apidocs/org/joda/time/format/DateTimeFormat.html
我总是使用此格式字符串:
yyyy-MM-dd'T'HH:mm:ss.SSSZ
而且,是的,如果它们出现在您的字符串中,它们就不是不正确的。
T: Denotes start of "time part" of the string.
Zone: 'Z' outputs offset. I suppose in thise case is GMT.
Source:http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html
I always use this format string:
yyyy-MM-dd'T'HH:mm:ss.SSSZ
And, yes, they are not incorrect, if they are present in your string.
您仅显示了解析代码,而不是如何将
DateTime
值转换回String
。我强烈怀疑您只是调用
toString()
,它使用默认的DateTime
ISO8601 格式。不要忘记
DateTime
值表示特定时区和日历系统中的某个时刻 - 它没有格式模式的概念。 “T”和“Z”不在DateTime
值中 - 它们只是在该值的默认表示形式中。这就像当您将int
转换为字符串时 - 它碰巧使用了十进制,但数字本身只是一个数字。如果您想以特定方式格式化
DateTime
,您应该使用You've only shown the parsing code - not how you've converted the
DateTime
value back to aString
.I strongly suspect you're just calling
toString()
, which use the defaultDateTime
ISO8601 format.Don't forget that a
DateTime
value represents an instant in time in a particular time zone and calendar system - it has no concept of format patterns. The "T" and "Z" aren't in theDateTime
value - they're just in the default representation of the value. It's like when you convert anint
to a string - it happens to use decimal, but the number itself is just a number.If you want to format a
DateTime
in a specific way, you should use您可以使用 Joda time 预定义的格式化程序,而不是创建自己的格式化程序。
您可以在
org.joda.time.format.ISODateTimeFormat
中找到它们。事实上,在您的情况下,我会使用 ISODateTimeFormat.basicDateTimeNoMillis 格式化程序。我认为它具有您正在寻找的模式:
yyyyMMdd'T'HHmmssZ
Instead of creating your own formatter, you can use one predefined by Joda time.
You will find them in
org.joda.time.format.ISODateTimeFormat
.In fact, in your case I would use
ISODateTimeFormat.basicDateTimeNoMillis
formatter. I think it has the pattern you were looking for:yyyyMMdd'T'HHmmssZ