Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SimpleDataFormat解析时间和日期错误的分和秒_Java_Android_Date - Fatal编程技术网

Java SimpleDataFormat解析时间和日期错误的分和秒

Java SimpleDataFormat解析时间和日期错误的分和秒,java,android,date,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")); 结果是: Wed Apr 22

有谁能解释一下这个代码有什么问题吗

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"));
结果是:

Wed Apr 22 20:07:47 GMT+02:00 2015
Wed Apr 22 19:54:00 GMT+02:00 2015
请注意输入时间中有毫秒时的分钟差异。

对于,毫秒格式值包含大写
S
字符,而不是小写
S
字符(秒)

第55分钟第二秒

S毫秒数978

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

使用
SSS
持续毫秒

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
另一方面,如果相同,则不需要多次重新创建
SimpleDateFormat
。您可以创建一次,将其保存到一个变量中,并多次调用
parse
,每次调用一次您希望解析的日期/时间字符串。

对于,毫秒格式值包含大写
S
字符,而不是小写
S
字符(秒)

第55分钟第二秒

S毫秒数978

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

使用
SSS
持续毫秒

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")

另一方面,如果相同,则不需要多次重新创建
SimpleDateFormat
。您可以创建一次,将其保存到变量中,并多次调用
parse
,每次调用一次您希望解析的日期/时间字符串。

使用大写SSS而不是SSS,因为s在SimpleDataFormat中被解释为秒。所以把你的代码改成

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"));
这将为你做这项工作。为了优化您的代码,请使用

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

System.out.println(sdf.parse("2015-04-22T19:54:11.0Z"));

不需要一次又一次地创建对象。只需创建一次并使用它进行解析。

使用大写SSS而不是SSS,因为s在SimpleDataFormat中被解释为秒。所以把你的代码改成

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"));
这将为你做这项工作。为了优化您的代码,请使用

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

System.out.println(sdf.parse("2015-04-22T19:54:11.0Z"));

不需要一次又一次地创建对象。只需创建一次并使用它进行分析。

重新创建SimpleDataFormat只是为了显示问题的大小写,而不是您的答案非常完美:)重新创建SimpleDataFormat只是为了显示问题的大小写,而不是您的答案非常完美:)