因此,我试图用Java解析一个日期字符串。我得到了正确的时间回来,但分钟似乎是在5-10左右。我在下面显示我的代码以及输入字符串和日期对象toString()输出。
你知道我哪里出错了吗?这是在安卓系统上,所以我不想使用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 日期toString() =11月7日12:56:46 GMT 2012 (毫秒= 1352293006816)
发布于 2012-11-07 13:12:26
您正在尝试将具有微秒精度的日期解析为毫秒精度。
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));发布于 2012-11-07 13:20:18
请确保在将字符串转换为日期对象时使用相同的时区,反之亦然。
https://stackoverflow.com/questions/13270403
复制相似问题