我使用Joda的DateTimeFormatter来获取格式化的日期和时间。
DateTimeFormatter hour = DateTimeFormat.forPattern("aa").withLocale(locale);
System.out.println(hour.print(mydateObj));
由于我将 DateTimeFormatter 与区域设置一起使用,我怎么知道时间是上午还是上午?
答案 0 :(得分:4)
目前尚不清楚“myDateObj”的类型是什么,所以我不得不以某种方式猜测。但有一件事是肯定的。如果时间是AM或PM,则无法使用格式化程序进行查询,因为此信息不构成格式化程序状态的一部分。格式化程序不是“小时”,因此您的变量名称完全是误导性的。理论上你可能会询问打印输出是否等于“AM”或“PM”(英文)。但是有一种更好的方法,它不依赖于任何语言环境设置。
Joda-Time提供各种类型,例如LocalTime
,LocalDateTime
或DateTime
,它们知道方法getHourOfDay()。请注意,无法直接访问AM / PM本身。但是按照小计算很容易做到:
public static boolean isAM(DateTime time) {
return time.getHourOfDay() < 12;
}