C#检查DateTime的最佳方式:如何优化9:30至16:00的时间判断代码
时间判断代码优化方案
原代码存在一个潜在问题:多次调用DateTime.Now可能因时间跳变(比如接近9:30时)导致判断逻辑出现误差。以下是几种更简洁、可靠的优化实现:
方法一:转换为当日总分钟数比较
将时间转换为当日的总分钟数,逻辑直观且仅需一次获取当前时间:static bool Run() { var now = DateTime.Now; int totalMinutes = now.Hour * 60 + now.Minute; // 9:30对应570分钟,16:00对应960分钟 return totalMinutes > 570 && totalMinutes < 960; }方法二:构造时间区间直接比较
创建当日的9:30和16:00两个时间节点,直接判断当前时间是否处于区间内:static bool Run() { var now = DateTime.Now; var startTime = new DateTime(now.Year, now.Month, now.Day, 9, 30, 0); var endTime = new DateTime(now.Year, now.Month, now.Day, 16, 0, 0); return now > startTime && now < endTime; }方法三:使用TimeSpan简化写法
借助TimeSpan仅提取时间部分进行比较,代码更简洁:static bool Run() { var nowTime = DateTime.Now.TimeOfDay; var startTime = new TimeSpan(9, 30, 0); var endTime = new TimeSpan(16, 0, 0); return nowTime > startTime && nowTime < endTime; }
内容的提问来源于stack exchange,提问作者user1257758
相关产品推荐
相关产品推荐

