【问题标题】:Determining if a time is between two other times确定一个时间是否在另外两个时间之间
【发布时间】: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


【解决方案1】:

我将Calendar.HOUR 更改为Calendar.HOUR_OF_DAY。这解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多