Joda DateTimeFormatter知道上午还是下午

Nov*_*ser 2 java localization jodatime

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

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

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

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

Men*_*ild 5

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

乔达时提供如各种类型的LocalTimeLocalDateTime或者DateTime哪知道方法getHourOfDay() 。请注意,不能直接访问AM / PM本身。但是,只需进行少量计算即可轻松实现:

public static boolean isAM(DateTime time) {
    return time.getHourOfDay() < 12;
}
Run Code Online (Sandbox Code Playgroud)