You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用TimeSpan判断时间是否处于工作时段逻辑错误如何修复?

问题原因
  • 核心判断逻辑写反
    你当前的if判断条件是预约时间落在工作时段范围内时触发返回不可用,和需求完全相反:你需要拦截的是不在工作时段内的预约,而非在时段内的。按照现有代码,用户输入1:00 PM(在10:00 AM到7:30 PM之间)会被错误拦截,输入10:00 PM(不在范围内)反而会通过,完全不符合预期。
  • 边界值处理缺失
    当前使用了严格大于>和严格小于<,如果用户预约时间刚好是工作开始时间10:00 AM或者结束时间7:30 PM,会被排除在判断之外,需要根据业务需求调整边界判断符,常规业务场景下工作起始时间是允许预约的,结束时间如果是下班时点,可设置为不允许预约超过该时间的场次。
修复后的代码示例
startTime = TimeSpan.Parse(startTime24); // 工作时段起始时间 例:10:00对应TimeSpan(10,0,0)
endTime = TimeSpan.Parse(endTime24); // 工作时段结束时间 例:19:30对应TimeSpan(19,30,0)

TimeSpan appointmentTimeSpan = obj.AppointmentTimeFrom; // 用户提交的预约时间

// 判断逻辑:不在工作时段内时,返回不可用
if (appointmentTimeSpan < startTime || appointmentTimeSpan > endTime)
{
    return Messages.WorkingSlotNotAvailable;
}
// 校验通过,执行后续逻辑
注意事项
  • 请确保startTime24、endTime24是24小时制的时间字符串,例如19:30而非07:30 PM,TimeSpan.Parse无法直接解析带AM/PM标识的12小时制时间,若数据库存储的是12小时制格式,需要先通过DateTime.ParseExact转换为DateTime类型后再取TimeOfDay属性获取TimeSpan值。
  • 如果业务要求结束时间7:30 PM不允许预约(即最晚可预约到7:30 PM之前的时间),可将appointmentTimeSpan > endTime调整为appointmentTimeSpan >= endTime。

内容的提问来源于stack exchange,提问作者Nic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:24:05