我需要检查一个DateTime变量是否在两周之间匹配。
像 23.11.2016 14:08 之类的东西是之间的:
目前我可以检查一天是否在正确的日子之间:
{{1}}
我开始构建一些看起来几乎一样的东西,但是 那是行不通的。
是否有一种更简单的方式我不知道或另一种解决方案? 我只需要检查一下是否有人在正常工作时间之外工作。
答案 0 :(得分:1)
我编辑所有内容以改变答案,因为我不太了解你的问题。
您可以执行以下操作:
TimeSpan timeFrom = new TimeSpan(15,40,00);
TimeSpan timeUntil = new TimeSpan(22,00,00);
if (yourDate.TimeOfDay > timeFrom && yourDate.TimeOfDay < timeUntil)
{
return;
}
为了检查星期几你可以采取Sefe之前回答的问题。
答案 1 :(得分:1)
您可以使用DateTime.DayOfWeek
:
DateTime dTime = DateTime.Parse(/*String from sql database*/);
DayOfWeek weekdayFrom = DayOfWeek.Tuesday;
DayOfWeek weekdayTo = DayOfWeek.Wednesday;
if ((dTime.DayOfWeek >= weekdayFrom) && (dTime.DayOfWeek <= weekdayTo))
一方面注意:DayOfWeek枚举在星期日作为第一天开始,以星期六作为最后一天结束。如果这对您很重要,您必须先使用CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek
来抵消您的工作日。
<强>更新强>
如果你想查看时间,你也必须检查实际的时差:
DateTime dTime = DateTime.Parse(/*String from sql database*/);
DayOfWeek weekdayFrom = DayOfWeek.Tuesday;
DayOfWeek weekdayTo = DayOfWeek.Wednesday;
double hourFrom = 12;
double hourTo = 18;
DateTime periodStart = dTime.AddDays(weekdayFrom - dTime.DayOfWeek).Date.AddHours(hourFrom);
DateTime periodEnd = dTime.AddDays(weekdayTo - dTime.DayOfWeek).Date.AddHours(hourTo);
if ((dTime >= periodStart) && (dTime <= periodEnd))
同样,您可能需要使用FirstDayOfWeek
进行抵消。
答案 2 :(得分:0)
经过多次尝试和搜索,我得出的结论是,我无法按照我想要的具体方式解决问题(工作轮班和假期之间的时间间隔等),但我找到了可以提供的第三方图书馆我可能需要的一切。
http://www.codeproject.com/Articles/168662/Time-Period-Library-for-NET