Java String to Date,DateFormat无法正常工作

时间:2016-03-23 14:15:02

标签: java date-format

我将以下格式的字符串转换为日期时遇到一些困难。继续抛出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位小数的精度,我很想知道如何。

5 个答案:

答案 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){

                }

对于日期转换,您必须同时使用格式。

  1. 格式之前“yyyy-MM-dd HH:mm:ss.SSSSSS”
  2. 转换格式“dd-MM-yyyy”

答案 3 :(得分:0)

日期不能使用纳秒,可以吗?

DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS000");

答案 4 :(得分:0)

在SimpleDateFormat中,

'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);