Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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 解析的日期有微小的差异_Java_Datetime - Fatal编程技术网

Java 解析的日期有微小的差异

Java 解析的日期有微小的差异,java,datetime,Java,Datetime,所以我试图用Java解析一个日期字符串。我得到了正确的时间回来,但分钟似乎是大约5-10分钟。我在下面显示我的代码以及输入字符串和日期对象toString()output 你知道我哪里出错了吗?这是在Android上,所以我不想使用JodaTime DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'"); Date date = sdf.parse(input); return date; 输入字

所以我试图用Java解析一个日期字符串。我得到了正确的时间回来,但分钟似乎是大约5-10分钟。我在下面显示我的代码以及输入字符串和日期对象
toString()
output

你知道我哪里出错了吗?这是在Android上,所以我不想使用JodaTime

DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'"); 

Date date = sdf.parse(input);

return date;
输入字符串=2012-11-07T12:47:05.0581816Z

Date toString()=Wed Nov 07 12:56:46 GMT 2012(毫秒=1352293006816)


您正在尝试将微秒精度的日期解析为毫秒精度

0581816是添加到时间12:47:05的毫秒数,而不是您可能期望的小数点后的一秒

由于低于毫秒的精度不能用
java.util.Date
表示,因此最简单的选择是截断小数并调整日期格式,如下所示:

final DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String input = "2012-11-07T12:47:05.058234234Z";
input = input.replaceFirst("(?<=\\.\\d{3})\\d+", "");
System.out.println(input);
System.out.println(sdf.parse(input));
final DateFormat sdf=新的简化格式(“yyyy-MM-dd'T'HH:MM:ss.SSS'Z'”);
字符串输入=“2012-11-07T12:47:05.058234234Z”;

input=input.replaceFirst((?您正在尝试将微秒精度的日期解析为毫秒精度

0581816是添加到时间12:47:05的毫秒数,而不是您可能期望的小数点后的一秒

由于低于毫秒的精度不能用
java.util.Date
表示,因此最简单的选择是截断小数并调整日期格式,如下所示:

final DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String input = "2012-11-07T12:47:05.058234234Z";
input = input.replaceFirst("(?<=\\.\\d{3})\\d+", "");
System.out.println(input);
System.out.println(sdf.parse(input));
final DateFormat sdf=新的简化格式(“yyyy-MM-dd'T'HH:MM:ss.SSS'Z'”);
字符串输入=“2012-11-07T12:47:05.058234234Z”;

input=input.replaceFirst((?请确保在将字符串转换为日期对象时使用相同的时区,反之亦然)

请确保在将字符串转换为日期对象时使用相同的时区,反之亦然。

“这是在Android上,因此我不希望使用JodaTime。”我不明白这种偏好的原因。Android不支持JodaTime吗?Android支持Joda,但我读到它增加了一些初始化开销等。也许我错了。“这是在Android上,所以我不希望使用JodaTime。”我不明白这种偏好的原因。安卓不支持JodaTime吗?安卓支持Joda,但我读到它增加了一些初始化开销等。也许我错了。