【问题标题】:Java DateTime parseJava 日期时间解析
【发布时间】:2014-06-23 05:57:17
【问题描述】:

我有以下代码可以简单地将日期和时间解析为格式

SimpleDateFormat sdfClient = new SimpleDateFormat("yyyyMMddhhmmss.s");
SimpleDateFormat sdfFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");

pmList.add(sdfClient.format(sdfFormat.parse(pmData[k].retrievalTime)));

想将格式更改为 sdfClient 但由于某种原因 eclipse 抛出错误:

java.text.ParseException: Unparseable date: "20140623135000.0"
at java.text.DateFormat.parse(DateFormat.java:357)
at com.syntronic.client.GenerateCSV.writepmData(GenerateCSV.java:220)
at com.syntronic.client.GenerateCSV.writeMEData(GenerateCSV.java:187)
at com.syntronic.client.GenerateCSV.<init>(GenerateCSV.java:87)
at com.syntronic.client.Client.main(Client.java:213)

有人知道原因吗?

【问题讨论】:

  • 我的猜测是pmData[k] 拥有第一种格式,但您首先将其解析为第二种格式。尝试使用sdfClientsdfFormat 交换呼叫。
  • pmData[k] 数组的类型是什么? sdfFormat.parse() 接受类型字符串作为参数。

标签: java parsing date time


【解决方案1】:

应该正好相反:

pmList.add(sdfFormat.format(sdfClient.parse(pmData[k].retrievalTime)));

说明:

pmList.add(
       sdfFormat.format(  <-- Gives a string 23/06/2014 01:50:00
            sdfClient.parse( <-- Gives a Date corresponding to the time 20140623135000.0
                  pmData[k].retrievalTime   <-- Time 20140623135000.0
               )
        )
        );

【讨论】:

    【解决方案2】:

    你已经把你的格式化程序和解析器混在一起了

    pmList.add(sdfClient.format(sdfFormat.parse(pmData[k].retrievalTime)));
    

    基本上说,"yyyyMMddhhmmss.s".format("dd/MM/yyyy hh:mm:ss".parse(...))

    你想用

    pmList.add(sdfFormat.format(sdfClient.parse(pmData[k].retrievalTime)));
    

    相反...

    【讨论】:

      猜你喜欢
      • 2015-06-26
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      相关资源
      最近更新 更多