我将以下格式的字符串转换为日期时遇到一些困难。继续抛出ParseException。
字符串: 2015-11-14 17:29:16.543934
我已经在这里看了一下,特别是这个链接:Java string to date conversion,但没有运气。
以下是我的方法目前的样子:
private Date parseTime(String input) {
// input format: 2015-11-14 17:29:16.543934
try {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssSSSSSS");
Date date = format.parse(input);
return date;
} catch (ParseException e) {
System.out.println("Could not parse time. ID: " + this.id);
}
return null;
}
修改
关于我在下面给出的答案(说明我在秒和毫秒之间错过了一个“。”)Jon Skeet有一个非常好的观点: “这仍然不会像你期望的那样工作。它会将你的输入视为543934毫秒......所以它将解析为17:38:19。”
我实际上并不需要这种精确度,所以我只是要缩短毫秒数,但如果有人知道如何保持6位小数的精度,我很想知道如何。
答案 0 :(得分:2)
您错过了字符串格式的点:
<强> SS.SSSSSS 强>
必须是:
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
答案 1 :(得分:0)
原来我错过了一个“。”在秒和毫秒之间,所以新的DateFormat如下:
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
答案 2 :(得分:0)
声明:
String tt = "2015-11-14 17:29:16.543934";
TextView textt;
然后用这个:
try{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
Date bod = format.parse(tt);
SimpleDateFormat rformat = new SimpleDateFormat("dd-MM-yyyy");
textt.setText(rformat.format(bod));
}catch (ParseException pe){
}
对于日期转换,您必须同时使用格式。
答案 3 :(得分:0)
日期不能使用纳秒,可以吗?
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS000");
答案 4 :(得分:0)
'S'是毫秒,没有微秒。
在DateTimeFormatter(Java 8)中,'S'表示小数部分,您可以毫无问题地转换字符串:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
LocalDateTime ldt = LocalDateTime.parse(input, dtf);
Instant instant = ldt.atZone(ZoneId.systemDefault()).toInstant();
return Date.from(instant);