作为我项目的一部分,我必须编写一个实用函数,它占用了开始时间和结束时间,我必须告诉我是否处于该持续时间的中间。例如,
输入时间表持续时间:下午2点至下午4点
当前时间:下午3点
回归:真实
我可以通过System.currentTimeMillis()
获得当前的纪元时间,但如何判断我是在同一时间的2点或3点?
答案 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
例如。