0

我正在开发一个使用班次模式的程序,例如晚上 7 点到早上 7 点我有以下声明

SELECT MAX(Number)  from LadleControl where Shift = 'Night Shift' and DateTime between @Date1 and @Date2

我已将日期时间设置如下

 DateTime startDate = DateTime.Today.AddHours(19).AddMinutes(1);
 DateTime endDate = DateTime.Today.AddHours(30).AddMinutes(59);

问题是当它超过 12am DateTime.Todays 时,Date 会发生变化,2 Date 参数也会发生变化。

是否可以尝试将日期时间保持在晚上 7 点到早上 7 点的轮班基础上,而不会在上午 12 点更改。

我试图在日期中进行硬编码,这很有效,但是对于不同日期的每个班次开始,日期都需要更改。

4

2 回答 2

1

如果我正确理解了问题

var now = DateTime.UtcNow;
DateTime startDate;
DateTime endDate;
if (now.Hour < 7)
    startDate = now.Date.AddDays(-1).AddHours(19).AddMinutes(1);
else
    startDate = now.Date.AddHours(19).AddMinutes(1);

endDate = startDate.AddHours(11).AddMinutes(58);
于 2013-06-25T07:55:28.357 回答
1

如果您选择“今天”,再加上 30 小时,您将在“明天”到达,因此这种行为是设计使然。

您可能希望使用 DateTime 构造函数创建 startDate 和 endDate,提供年、月、日、小时和分钟等。

于 2013-06-25T08:04:51.097 回答