Nie*_*els 25 c# wpf windows-phone
对于我的应用程序,我需要知道是否Now()在两个值之间.
用户可以设置开始和结束时间,这样他就不会受到通知的干扰(例如在夜间).
因此,如果有两个TimePickers(开始和结束时间),用户可以设置.
比方说,用户设置22:00的StartTime,并07:00为EndTime(这将包括夜间).
如何检查是否在DateTime.Now所选的开始和结束时间之间?
编辑: 我只希望这与小时和分钟部分一起使用.因此,如果用户设置开始和结束时间,这应该适用于每晚.
Gab*_*abe 66
首先,您需要将所有内容转换为相同的单位(我们将使用TimeSpan),然后您需要查看开始时间是否跨越午夜,最后根据该检查的结果进行比较:
// convert everything to TimeSpan
TimeSpan start = new TimeSpan(22, 0, 0);
TimeSpan end = new TimeSpan(07, 0, 0);
TimeSpan now = DateTime.Now.TimeOfDay;
// see if start comes before end
if (start < end)
return start <= now && now <= end;
// start is after end, so do the inverse comparison
return !(end < now && now < start);
Run Code Online (Sandbox Code Playgroud)
这是为您完成的功能:
bool TimeBetween(DateTime datetime, TimeSpan start, TimeSpan end)
{
// convert datetime to a TimeSpan
TimeSpan now = datetime.TimeOfDay;
// see if start comes before end
if (start < end)
return start <= now && now <= end;
// start is after end, so do the inverse comparison
return !(end < now && now < start);
}
Run Code Online (Sandbox Code Playgroud)
你会称之为:
bool silenceAlarm = TimeBetween(DateTime.Now, StartTime.Value, EndTime.Value);
Run Code Online (Sandbox Code Playgroud)
由于你只收集了两次没有日期,你需要弄清楚这两次是否是同一天.如果你把StartTime,EndTime和Now成TimeSpans:
if (StartTime > EndTime)
{
// the range crosses midnight, do the comparisons independently
return (StartTime < Now) || (Now < EndTime);
}
else
{
// the range is on the same day, both comparisons must be true
return StartTime < Now && Now < EndTime;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71898 次 |
| 最近记录: |