【问题标题】:Time ranges with 24 hour formatting具有 24 小时格式的时间范围
【发布时间】:2016-01-14 22:10:22
【问题描述】:

我需要测试两个值是否属于一个班次。我有一个活动的开始时间和结束时间,我需要确保开始时间不在班次开始时间之前,并且结束时间不在班次结束时间之后。问题是班次从 22:00 运行到 06:00。我目前正在使用 Timespan 变量,但我的简单 if 语句无法完成工作:

if (start >= shiftStartTime & end <= shiftEndTime)

我明白为什么它不起作用,但我不知道如何解决这个问题。我也试过了:

if (start.Ticks > shiftStartTime.Ticks && end.Ticks < shiftEndTime.Ticks)

根据用户制定的规范(这不是我的选择),我有 4 个组合框,然后将它们组合使用。这是我获取用户选择的开始和结束时间的非常粗略的方法:

string endHour = (cmbEndHour.SelectedValue as ComboBoxItem).Content.ToString();
string endMin = (cmbEndMin.SelectedValue as ComboBoxItem).Content.ToString();
string endEvent = (endHour + ":" + endMin);
TimeSpan end = TimeSpan.Parse(endEvent);

任何帮助都会很棒!

【问题讨论】:

  • 你是如何创建start,像这样var start = TimeSpan.FromHours(22);
  • 我更新了问题以显示我如何获取值。很遗憾,我无法更改控件。
  • 尝试使用Datetime,而不是Timespan

标签: c# timespan


【解决方案1】:

你可以用这个:

if ((start >= shiftStartTime || start <= shiftEndTime) && (end >= shiftStartTime || end <= shiftEndTime))

【讨论】:

    猜你喜欢
    • 2016-07-22
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多