Java 解析的日期有微小的差异
所以我试图用Java解析一个日期字符串。我得到了正确的时间回来,但分钟似乎是大约5-10分钟。我在下面显示我的代码以及输入字符串和日期对象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; 输入字
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,但我读到它增加了一些初始化开销等。也许我错了。