我正在设置这样的日期实例:
Calendar date = Calendar.getInstance();
date.set(2015, 9, 25, 12, 0);
在这种情况下,我知道它是12:00
,整整一个小时,但我也有动态输入日期参数的情况,因此我想确定该日期是完整还是半小时。< / p>
,对于12:00
和12:30
,它将返回true
,而对于12:23
,它将返回false。
我已经从另一个答案尝试了timeInMillis % 36000000
,但它没有用。
答案 0 :(得分:4)
使用get minutes来检查分钟。
int minutes = date.get(Calendar.MINUTE); // gets the minutes
return (minutes == 0 || minutes == 30);
答案 1 :(得分:2)
你正走在正确的轨道上,你只是使用了错误的价值。毫秒,它将是1800000.(但请参阅biziclop's comment表明这不是一个好主意。)我得到会议记录并使用% 30 == 0
。
无偿分钟示例:(live copy)
for (int n = 0; n < 60; ++n) {
System.out.println(n + ( n % 30 == 0 ? " <= Yes" : ""));
}
或者以毫秒为单位:(live copy)
for (int n = 0; n < 3600000; n += 60000) {
System.out.println(n + ( n % 1800000 == 0 ? " <= Yes" : ""));
}
答案 2 :(得分:0)
您可以让Java为您完成工作。使用java.time框架查询分钟,秒和小数秒的日期时间值。
ZonedDateTime now = ZonedDateTime.now ( ZoneId.of ( "America/Montreal" ) );
// If the value has any seconds or fraction of a second, we know this is neither full hour nor half hour.
if ( ( now.getSecond () != 0 ) || ( now.getNano () != 0 ) ) {
System.out.println ( "now: " + now + " is neither full nor half hour, because of seconds or fraction-of-second." );
return;
}
int minuteOfHour = now.getMinute ();
switch ( minuteOfHour ) {
case 0:
System.out.println ( "now: " + now + " is full hour." );
break;
case 30:
System.out.println ( "now: " + now + " is half hour." );
break;
default:
System.out.println ( "now: " + now + " is neither full nor half hour." );
break;
}
与早期版本的Java捆绑在一起的java.util.Date/.Calendar类非常麻烦,应该避免使用。 java.time框架取代了它们。