确定时间是满还是半小时

时间:2015-10-25 21:45:45

标签: java date datetime

我正在设置这样的日期实例:

Calendar date = Calendar.getInstance();
date.set(2015, 9, 25, 12, 0);

在这种情况下,我知道它是12:00,整整一个小时,但我也有动态输入日期参数​​的情况,因此我想确定该日期是完整还是半小时。< / p>

,对于12:0012:30,它将返回true,而对于12:23,它将返回false。

我已经从另一个答案尝试了timeInMillis % 36000000,但它没有用。

3 个答案:

答案 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.time

您可以让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框架取代了它们。