【发布时间】:2013-07-28 21:37:35
【问题描述】:
我正在尝试使用 SimpleDateFormat 解析几个小时,并确定当前时间是否介于两组小时之间。基本上,考虑到一个地方的营业时间,我正在尝试确定它目前是否开放我们关闭。
我通过执行以下操作获取当前时间:
SimpleDateFormat sdf2 = new SimpleDateFormat("kk:mm");
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR);
int minute = now.get(Calendar.MINUTE);
String currentHour = Integer.toString(hour);
String currentMinute = Integer.toString(minute);
String timeNow = currentHour + ":" + currentMinute;
Date timeRightNow = sdf2.parse(timeNow);
然后,我判断timeRightNow是否在开盘和收盘时间之间,我在做以下事情:
if (timeOpen.before(timeRightNow) && timeClose.after(timeRightNow)) {
openStatus = "open!";
} else {
openStatus = "closed.";
}
timeOpen 和 timeClose 都是通过使用 sdf2 解析字符串来找到的,其方式与找到 timeRightNow 的方式完全相同。
每次运行时,它都会将openStatus 设置为“关闭”。即使当前时间介于开盘时间和收盘时间之间。谁能指出我正确的方向来弄清楚为什么会发生这种情况?
【问题讨论】:
-
您是否有上午/下午的烦恼?使用调试器进行跟踪应该可以揭示问题的根源。
-
或者只是输出那些时间并查看它们。
-
如何计算timeOpen和timeClose?
-
当前时间 (currentHour, currentMinute) 计算为 12 小时格式,而其他时间为 24 小时格式。这意味着当它放入 sdf2 时,当前时间 (4:52) 不在例如 12:00 和 21:30 之间。如何获得当前时间为 24:00 格式(因此是 16:52 而不是 4:52)?
标签: android datetime simpledateformat