【问题标题】:Why does Joda time change the PM in my input string to AM?为什么 Joda time 将我输入字符串中的 PM 更改为 AM?
【发布时间】:2011-01-13 18:48:33
【问题描述】:

我的输入字符串是下午时间:

    log(start);
    // Sunday, January 09, 2011 6:30:00 PM

我使用Joda Time's pattern syntax如下解析DateTime:

    DateTimeFormatter parser1 = 
    DateTimeFormat.forPattern("EEEE, MMMM dd, yyyy H:mm:ss aa");
    DateTime startTime = parser1.parseDateTime(start);

那么,为什么我的输出字符串是 AM?

    log(parser1.print(startTime));
    // Sunday, January 09, 2011 6:30:00 AM

【问题讨论】:

    标签: java parsing datetime jodatime


    【解决方案1】:

    您的解析字符串包含“H”,它告诉您的解析器将该值解释为一天中的 24 小时小时 (0..23)。所以 6 被解释为一天中的第 6 个小时。早晨。打印的 AM 是因为解析的整个日期被认为是在早上。

    如果您想使用 12 小时时间,请将格式字符串更改为:

    "EEEE, MMMM dd, yyyy h:mm:ss aa".
    

    'h' 将被解释为一天中的 12 小时小时 (1..12)

    【讨论】:

      【解决方案2】:

      H 会给你一个 0-23 的每一天的值,所以也许它正在读取这个值,看到 6,并确定它一定是 AM?

      尝试使用小写的 h 来获取当天的时钟小时。

      【讨论】:

        猜你喜欢
        • 2012-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-05
        • 2023-04-09
        • 2017-01-16
        • 2011-02-12
        • 1970-01-01
        相关资源
        最近更新 更多