SimpleDateFormat解析时间和日期错误的分钟和秒

Aye*_*ieh 0 java android date

任何人都可以向我解释这段代码中有什么问题:

System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sss'Z'").parse("2015-04-22T19:54:11.827Z"));

System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sss'Z'").parse("2015-04-22T19:54:11.0Z"));
Run Code Online (Sandbox Code Playgroud)

输出是:

Wed Apr 22 20:07:47 GMT+02:00 2015
Wed Apr 22 19:54:00 GMT+02:00 2015
Run Code Online (Sandbox Code Playgroud)

请注意输入时间中有毫秒的分钟差异.

rge*_*man 7

对于SimpleDateFormat,毫秒格式值包含大写S字符,而不是小写s字符秒.

秒数第55号

S毫秒数978

它将解释827为秒,并将这些秒(847秒为13分47秒)添加到您的值.

使用SSS毫秒.

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
Run Code Online (Sandbox Code Playgroud)

另外,SimpleDateFormat如果它是相同的,你不需要多次重新创建.您可以创建一次,将其保存到变量,并parse为您要解析的每个日期/时间字符串多次调用一次.