我有一些时间 String
例如 "09:00"
和 "17:30"
我需要检查当前是否时间在该范围内。
我想我可以做这样的比较:
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date now = new Date();
Date begin;
Date end;
begin = format.parse(begin_string);
end = format.parse(end_string);
if (now.compareTo(begin) > 0 && end.compareTo(now) > 0)
return true;
else
return false;
事实证明,当我解析字符串时,时间解析正确,但日期设置为 1970 年 1 月 1 日。这样,代码将始终返回 false
。
我想知道如何将 begin
和 end
设置为当前日期,但时间来自它们的字符串。
最佳答案
您也可以像这样重用当前时间的格式对象:
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date now = new Date();
String time = format.format(now); // format to wall time loosing current date
System.out.println(time);
now = format.parse(time); // reparse wall time
System.out.println(now);
因此,您可以隐式使用系统的标准时区将 now
转换为 1970,然后可以使用它与 begin
和 end
进行直接比较>.
Date begin = format.parse("09:00");
Date end = format.parse("21:30");
return (begin.before(now) && end.after(now)); // open-bounded interval
关于java - 使用自定义时间获取当前日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22696124/