【问题标题】:Java: How to parse time in the format `YYYYMMDDHHMMSSTTT`? [duplicate]Java:如何以“YYYYMMDDHHMMSSTTT”格式解析时间? [复制]
【发布时间】:2018-04-16 17:34:53
【问题描述】:

我正在尝试读取 csv 文件的行。每行代表一个日志历史记录,其时间戳位于第 1 列。时间戳始终采用YYYYMMDDHHMMSSTTT 的形式(精确到毫秒)。

但是,我不知道如何以YYYYMMDDHHMMSSTTT 的格式解析时间并使其成为我正在创建的类的实例变量。事实上,我不确定在这种情况下应该是什么type。

那么,我应该如何以YYYYMMDDHHMMSSTTT 的格式解析时间,即20180301093559127?谢谢。

【问题讨论】:

  • 请注意 MM != mm 等
  • System.out.println(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS").parse("20180301093559127"));
  • 您的搜索和研究发现了什么?当然,您可以在那里找到一些信息,包括要使用的类型以及如何解析日期和时间。使用的明显 Java 类型是 LocalDateTime,但是如果您知道时区,使用 ZonedDateTime 可能会有优势。

标签: java datetime string-parsing datetime-parsing


【解决方案1】:

您可以这样做作为一种解决方法。 虽然不是一个很好的解决方案,但会适用于您的情况。

假设您的日期是: 字符串 d="20180416235441095";

    String year=d.substring(0,4);
    String mon=d.substring(4,6);
    String day=d.substring(6,8);
    String hour=d.substring(8,10);
    String min=d.substring(10,12);
    String sec=d.substring(12,14);
    String mill=d.substring(14,17);

    String formattedDate=year+"-"+mon+"-"+day+" "+hour+":"+min+":"+sec+"."+mill;
    System.out.println("Formatted Date is : "+ formattedDate);
    LocalDateTime datetime = LocalDateTime.parse(formattedDate, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
    System.out.println("Final Date is : "+datetime);

输出如下: 格式化日期为:2018-04-16 23:54:41.095 最终日期是:2018-04-16T23:54:41.095

【讨论】:

  • 这不起作用,因为您获得的格式不是 LocalDateTime 的标准格式,这就是您需要以可以解析的格式格式化 csv 数据的地方。希望对您有所帮助!
猜你喜欢
  • 2022-01-03
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
相关资源
最近更新 更多