我正在尝试检查当前时间是否介于Start Time和End time 之间。但我的方法总是返回false:
from = "5:10:00"; to = "10:10:00"
private boolean isTimeBetweenTwoTime(String from, String to) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("H:mm:ss");
Date date_from = formatter.parse(from);
Date date_to = formatter.parse(to);
Time startTime = new Time(date_from.getTime());
Time endTime = new Time(date_to.getTime());
Calendar c = Calendar.getInstance();
Time now = new Time(c.getTimeInMillis());
if (now.before(endTime) && now.after(startTime)) {
Log.d(LOG_TAG, "Yes time between");
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
问题是当你这样做时
Date date_from = formatter.parse(from);
Date date_to = formatter.parse(to);
Run Code Online (Sandbox Code Playgroud)
格式化程序是这样定义的:
SimpleDateFormat formatter = new SimpleDateFormat("H:mm:ss");
Run Code Online (Sandbox Code Playgroud)
然后是与 Java api 仅相关的时间,但日期对象包含的不仅仅是时间信息,它们也包含年、月等,并且这些对象正在初始化为纪元UNIXTime
所以你创建的初始日期是
欧洲中部时间 1970 年 1 月 1 日星期四 05:10:00 欧洲中部时间 1970 年 1 月 1 日星期四 10:10:00
所以询问今天/现在(2016 年 6 月 22 日)是否在这些日期之间永远不会返回 true...
另一方面,您的条件看起来是颠倒的,作为最后的提示,您不需要 SQL-Classes 进行计算,只需使用日期对象,您就会得到很好的结果
public static void main(String[] args) throws ParseException {
String from = "5:10:00";
String to = "10:10:00";
String n = "08:10:00";
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
Date date_from = formatter.parse(from);
Date date_to = formatter.parse(to);
Date dateNow = formatter.parse(n);
if (date_from.before(dateNow) && date_to.after(dateNow)) {
System.out.println("Yes time between");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3052 次 |
| 最近记录: |