我的Joda Time格式模式是不正确的,在解析的DateTime输出中产生`T`和`Z`?

Tre*_*ree 2 java date-format jodatime

使用下面的Joda Time的模式语法,这个输入字符串:

Sunday, January 09, 2011 6:15:00 PM
Run Code Online (Sandbox Code Playgroud)

变成这个日期时间:

2011-01-09T06:15:00.000Z
Run Code Online (Sandbox Code Playgroud)

码:

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);
Run Code Online (Sandbox Code Playgroud)

这种格式模式不正确吗?如果不是,有什么TZ日期时间输出里面在做什么?

2011-01-09T06:15:00.000Z
Run Code Online (Sandbox Code Playgroud)

che*_*koo 14

T:表示字符串的"时间部分"的开始.区域:'Z'输出偏移量.我想在这种情况下是GMT.资料来源:http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html

我总是使用这种格式字符串: yyyy-MM-dd'T'HH:mm:ss.SSSZ

并且,是的,如果它们存在于您的字符串中,它们不是不正确的.

  • 谢谢cheekoo,我错过了'T'中的单引号! (3认同)

Jon*_*eet 12

您只显示了解析代码 - 而不是您如何将DateTime值转换回a String.

我强烈怀疑你只是toString()使用默认的DateTimeISO8601格式进行呼叫.

不要忘记,DateTime值表示特定时区和日历系统中的即时时间 - 它没有格式模式的概念."T"和"Z"不在DateTime值中 - 它们只是值的默认表示.就像你将int一个字符串转换为字符串一样 - 它碰巧使用十进制,但数字本身只是一个数字.

如果要以DateTime特定方式格式化,则应使用

String text = formatter.print(startTime);
Run Code Online (Sandbox Code Playgroud)