【问题标题】:Unable to remove millis from joda dateTime object无法从 joda dateTime 对象中删除毫秒
【发布时间】:2017-08-21 22:55:29
【问题描述】:

我尝试了不同的ISODateTimeFormatsdateHourMinuteSecond()dateTimeNoMillis())和我自己的格式"yyyy-MM-dd'T'HH:mm:ss",以在没有毫秒的情况下将时间戳解析为日期时间对象,但失败了。

对于每种格式,我都尝试相应地修改字符串:

String value = "2011-01-24T09:45:00.000";
DateTimeFormatter formatter = ISODateTimeFormat.dateHourMinuteSecond();
value = value.substring(0, value.lastIndexOf('.'));
System.out.println("Formatted dateTime: "+formatter.parseDateTime(value));

输出:

Formatted dateTime: 2011-01-24T09:45:00.000Z

【问题讨论】:

    标签: java datetime jodatime datetime-format


    【解决方案1】:

    我在 jodatime 2.2 中进行了测试。

    formatter.parseDateTime(value) 返回一个DateTime 对象。当您将此对象传递给System.out.println 时,它会调用此DateTime 对象的toString() 方法。又看了一下源码,发现它调用了ISODateTimeFormat

    // (from jodatime source)
    /**
     * Output the date time in ISO8601 format (yyyy-MM-ddTHH:mm:ss.SSSZZ).
     * 
     * @return ISO8601 time formatted string.
     */
    @ToString
    public String toString() {
        return ISODateTimeFormat.dateTime().print(this);
    }
    

    要得到你想要的输出(没有毫秒),你需要格式化DateTime对象:

    DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss");
    value = value.substring(0, value.lastIndexOf('.'));
    DateTime datetime = formatter.parseDateTime(value);
    
    // *** create the formatter with the "no-millis" format ***
    DateTimeFormatter formatterNoMillis = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss");
    System.out.println("Formatted dateTime: " + datetime.toString(formatterNoMillis));
    

    输出将是:

    Formatted dateTime: 2011-01-24T09:45:00
    

    你也可以这样做:

    System.out.println("Formatted dateTime: " + formatterNoMillis.print(datetime));
    //the output will be the same
    

    【讨论】:

    • 这很有帮助,但我仍然想要没有毫秒的 dateTime 对象,而不是没有的字符串,请建议!
    • DateTime 对象 always 保存毫秒值。即使您在没有它的情况下解析字符串,毫秒也会自动设置为零。如果你只想忽略毫秒部分,你可以实现你自己的ReadablePartial 子类(你可以看看LocalDateTime,这是一个没有时区字段的DateTime - 你可以做类似的事情,但是还从中删除millis字段)。我从来没有上过部分课程,但这就是我开始的方式。
    猜你喜欢
    • 2011-05-23
    • 2021-09-06
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    相关资源
    最近更新 更多