java - Joda DateTimeFormatter 知道上午还是下午

标签 java localization jodatime

我正在使用 Joda 的 DateTimeFormatter 来获取格式化的日期和时间。

DateTimeFormatter hour = DateTimeFormat.forPattern("aa").withLocale(locale);

System.out.println(hour.print(mydateObj));

由于我在区域设置中使用 DateTimeFormatter,我如何知道时间是 AM 还是 PM?

最佳答案

目前尚不清楚“myDateObj”的类型是什么,所以我必须以某种方式猜测。但有一件事是肯定的。您不能使用格式化程序来查询时间是 AM 还是 PM,因为此信息不构成格式化程序状态的一部分。格式化程序不是“小时”,因此您的变量名称完全具有误导性。理论上您可能会问打印输出是否等于“AM”或“PM”(英文)。但是有一种更好的方法,它不依赖于任何区域设置。

Joda-Time 提供各种类型,例如 LocalTimeLocalDateTimeDateTime,它们都知道方法 getHourOfDay() 。请注意,无法直接访问 AM/PM 本身。但很容易做以下小计算:

public static boolean isAM(DateTime time) {
    return time.getHourOfDay() < 12;
}

关于java - Joda DateTimeFormatter 知道上午还是下午,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30874403/

相关文章:

java - 获取两个 DateTimes 之间的差异作为 DateTime 对象?

java - 如何在 MongoTemplate 中使用多个 orOperator

java - 在 Java 中从 RandomAccessFile 读取/写入

java - 返回值的钻石运算符

java - 将灰度图像转换为 RGB

ios - 根据NSUserDefaults的设置进行iOS App本地化

java - 映射,使用 put 时重用可变键

localization - 网站语言 : use browser locale or IP address

c# - 其他环境下的类库中未加载语言资源文件

java - 检查当前日期和时间是否在不包括周末的日期范围内