我想检查当前时间是否在我的开放时间和关闭时间之间,知道关闭时间有时是凌晨2点,开放时间是凌晨3点,例如,我已经尝试逻辑地处理这个问题2周了,现在我不能绕着它缠绕我的头,这是我最好的尝试:
open = new DateTime(now.year, now.month, now.day, open.hour, open.minute);
close = new DateTime(now.year, now.month, now.day, close.hour, close.minute);
midnight = new DateTime(now.year, now.month, now.day, midnight.hour, midnight.minute);
if(close.hour > midnight.hour && close.hour < open.hour){
if(now.hour < midnight.hour){
DateTime theClose = new DateTime(now.year, now.month, now.day + 1, close.hour, close.minute);
if(now.isBefore(theClose) && now.isAfter(open)){
sendIt(context, notes);
}else{
_showToast("this branch is closed right now");
}
}else{
open = new DateTime(now.year, now.month, now.day - 1, open.hour, open.minute);
if(now.isBefore(close) && now.isAfter(open)){
sendIt(context, notes);
}else{
_showToast("this branch is closed right now");
}
}
}else{
if(now.isBefore(close) && now.isAfter(open)){
sendIt(context, notes);
}else{
_showToast("this branch is closed right now");
}
}
5条答案
按热度按时间plicqrtu1#
r1wp621o2#
pb3skfrl3#
正如您所注意到的,在我们的例子中使用
DateTime
并不是最好的解决方案,因为它依赖于月/年/日,相反,我们可以使用TimeOfDay
类,它不依赖于特定的日期,而只依赖于时间:1zmg4dgp4#
如果你的时间格式是24小时,我有一个简单的解决方案,因为你不需要任何外部库。
sirbozc55#
如果您使用数字格式[0..23]表示小时,则可以将时间转换为当天过去的秒数。对要检查的范围执行相同操作,查看当前过去的秒数是否在两个数字范围(秒)之间: