我想将当前本地时间与恒定时间范围进行比较,但我当前的解决方案似乎比我预期的要困难。
我可以构造一个chrono::DateTime<Local>
with Local::now()
。然后我可以费力地找出是否now
位于特定时间范围内,如下所示:
let current_hour = now.hour();
let current_minute = now.minute();
// see if `now` lies between 06:00 and 23:00
current_hour >= 6 && current_hour < 23
// note the inelegance of the syntax and the potential for fencepost errors
如果我想检查 06:12–23:15 的范围,问题会变得更糟,因为我必须检查小时是否等于 6,然后检查分钟是否大于 12,然后检查 - zzzzz...
那很无聊。我可以尝试使用 字符串表示parse_from_rfc2822
,但是我必须首先发出当前日期,然后在一天中的时间进行编辑,然后检查解析错误,现在我又在睡觉了。
我想我只是在阅读错误的chrono 文档。如果我要实现这个库,我会尝试构建一个TimeOfDay<Local>
实现的数据类型Ord
,从而允许惯用的范围检查。我想它已经在某个地方了,我只是想念它。