如何判断我是否在时间段中间?

时间:2014-12-08 14:12:03

标签: java datetime

作为我项目的一部分,我必须编写一个实用函数,它占用了开始时间和结束时间,我必须告诉我是否处于该持续时间的中间。例如,

输入时间表持续时间:下午2点至下午4点
当前时间:下午3点 回归:真实

我可以通过System.currentTimeMillis()获得当前的纪元时间,但如何判断我是在同一时间的2点或3点?

4 个答案:

答案 0 :(得分:4)

这是一个简单的成语Calendar

Calendar now = Calendar.getInstance();
Calendar before = Calendar.getInstance();
before.set(Calendar.HOUR_OF_DAY, 14);
before.set(Calendar.MINUTE, 0);
Calendar after = Calendar.getInstance();
after.set(Calendar.HOUR_OF_DAY, 16);
after.set(Calendar.MINUTE, 0);
System.out.println(now.before(after) && now.after(before));

输出(14到16之间)

true

答案 1 :(得分:0)

您可以使用日历获取当前时间 - Calendar.getInstance()。get(Calendar.HOUR);

答案 2 :(得分:0)

使用Calendar.getInstance()获取当前时间

// date time now
Calendar from=Calendar.getInstance();
// set to 14:00:00
from.set(Calendar.HOUR,14);
from.set(Calendar.MINUTE,0);
from.set(Calendar.SECOND,0);

// date time now
Calendar to=Calendar.getInstance();
// set to 16:00:00
to.set(Calendar.HOUR,16);
to.set(Calendar.MINUTE,0);
to.set(Calendar.SECOND,0);

// date time now
Calendar now=Calendar.getInstance();

boolean value=now.getTimeInMillis()>from.getTimeInMillis()&& now.getTimeInMillis()<to.getTimeInMillis();

System.out.println("now is between provided period? "+value);

答案 3 :(得分:0)

您可以使用LocalTime

LocalTime start = LocalTime.of(14, 0, 0);
LocalTime end = LocalTime.of(16, 0, 0);
LocalTime now = LocalTime.now();

return now.isAfter(start) && now.isBefore(end);

请注意,在白天节约的日子里,由于时间的变化,这可能会或可能不会如您所愿。如果您希望这些案例可能已被考虑,您可以切换到ZonedDateTime例如。