【发布时间】:2018-02-18 05:36:57
【问题描述】:
我正在检查几年前编写的代码。然后我意识到 Android Studio 在Calendar.AM 给出了一个注解,它说它必须是Calendar.SUNDAY、Calendar.MONDAY 等等之一...
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minute);
c.add(Calendar.MINUTE, -90 * (pos + 1) - 14);
hour = c.get(Calendar.HOUR);
minute = c.get(Calendar.MINUTE);
boolean am = (c.get(Calendar.AM_PM) == Calendar.AM);
if (hour == 0) hour = 12;
String time = hour + ":";
time += (minute < 10) ? "0" + minute : minute;
time += (am) ? " AM" : " PM";
return time;
我只想做一个布尔检查是上午还是下午,并相应地设置时间。该程序正在运行。
【问题讨论】:
-
课堂日历是在“老派”中设计的,使用整数常量,而不是枚举。所以使用正确的常量只依赖于程序员,不是“类型安全的”。
-
我不明白你,Javadoc类的说法不同
-
该消息似乎没有意义。 The documentation of
Calender.AM表示“AM_PM字段的值表示一天中从午夜到正午之前的时段。”。根本没有理由与Calendar.SUNDAY进行比较。 -
如果您今天要编写该代码,有两个建议:(1) 使用格式化程序来格式化时间而不是重新发明轮子 (2) 考虑在 @987654322 中获取现代 Java 日期和时间 API @ 所以你可以使用
LocalTime和DateTimeFormatter。现代类通常更易于使用。 -
为什么要投反对票?代码可能不是严格意义上的最小化,但它又好又短,问题可能不是女王陛下最好的英语,但我想我们可以理解它。最重要的是,我认为这是一个完全有效且有趣的问题。
标签: java android android-studio calendar java.util.calendar