【问题标题】:Converting 24-hour clock time to am/pm in Joda-Time在 Joda-Time 中将 24 小时制时间转换为上午/下午
【发布时间】:2013-09-29 06:35:10
【问题描述】:

我刚开始使用Joda-Time,并让它在24-hour clock(“军事时间”)中正确显示我的日期,但我宁愿它是上午/下午。查了一下,它提到了hourOfDay,我认为这是 HH 值,所以我尝试编写一个循环,将其分解为 AM/Pm,但它从未成功。

    DateTime dtf = new DateTime(wikiParsedDate);


    if (hourOfDay == 00) {
        hourOfDay == 12;
        DateTimeFormatter builder = DateTimeFormat.forPattern( "dd-MM-yyyy HH:mm:ss.SS'AM" );
        return builder.print(dtf);
    } else if (0 < hourOfDay && hourOfDay < 12) {
        DateTimeFormatter builder = DateTimeFormat.forPattern( "dd-MM-yyyy HH:mm:ss.SS'AM" );
        return builder.print(dtf);
    } else if (hourOfDay > 12) {
        hourOfDay - 12 == hourOfDay;
        DateTimeFormatter builder = DateTimeFormat.forPattern( "dd-MM-yyyy HH:mm:ss.SS'PM" );
        return builder.print(dtf);
    }

}

【问题讨论】:

  • hourOfDay - 12 == hourOfDay; 似乎错了。你的意思是hourOfDay -= 12;?但这也行不通。它必须是 dtf = dtf.withHourOfDay(dtf.getHourOfDay()-12) 之类的东西,但这也是不正确的,因为它应该留给格式化程序来编写 AM 或 PM

标签: java jodatime


【解决方案1】:

查看DateTimeFormat的API文档。这应该做你想做的事:

DateTimeFormatter builder = DateTimeFormat.forPattern("dd-MM-yyyy hh:mm:ss.SSa");

不同情况下无需复杂化。

【讨论】:

  • 查看DateTimeFormat.forStyle 以生成字符串表示,其格式和语言已针对特定Locale 本地化。
  • 什么是.SSa?是空格后跟 am/pm 吗?
  • @IgorGanapolsky No. 请参阅DateTimeFormat 的 API 文档。 SS = 几分之一秒,a = 上午/下午。
猜你喜欢
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 2012-12-03
  • 1970-01-01
  • 2020-06-30
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多