时间跨度上午到下午 c#
Timespan AM to PM c#
我正在从事一个涉及轮班工作的项目,因此我需要随着时间的推移正确显示轮班。我目前有 3 个班次(shifth = start shifthe = end),如下所示。 Shift1 上午 8 点到下午 4 点 Shift2 4:01PM-12:01AM 和 Shift3 12:02AM-7:59AM AM 时间覆盖了我的下午时间,因为我在军事时间所以他们永远不会改变它只是停留在 shift3。任何帮助将不胜感激,下面是我的代码。
private void shifts_Tick(object sender, EventArgs e)
{
if (DateTime.Now.TimeOfDay >= new TimeSpan(Settings.Default.shift1h,Settings.Default.shift1m, 0) && DateTime.Now.TimeOfDay <= new TimeSpan(Settings.Default.shift1he, Settings.Default.shift1me, 0))
{
txtbxname1.Text = "Shift1";
}
if (DateTime.Now.TimeOfDay >= new TimeSpan(Settings.Default.shift2h, Settings.Default.shift2m, 0) && DateTime.Now.TimeOfDay <= new TimeSpan(Settings.Default.shift2he, Settings.Default.shift2me, 0))
{
txtbxname1.Text = "Shift2";
}
if (DateTime.Now.TimeOfDay >= new TimeSpan(Settings.Default.shift3h, Settings.Default.shift3m, 0) && DateTime.Now.TimeOfDay <= new TimeSpan(Settings.Default.shift3he, Settings.Default.shift3me, 0))
{
txtbxname1.Text = "Shift3";
}
}
如果你用if...else if ...else就没有问题
if (DateTime.Now.TimeOfDay >= ...... first shift selection logic ....)
{
txtbxname1.Text = "Shift1";
}
else if (DateTime.Now.TimeOfDay >= ....second shift selection logic...)
{
txtbxname1.Text = "Shift2";
}
else // everything else is the third shift
{
txtbxname1.Text = "Shift3";
}
最简单的方法是从午夜开始获取当前 TimeSpan,计算分钟并将它们与基准值进行比较,例如(我只计算了第三班次的值):
var minutes = (DateTime.Now - DateTime.Today).TotalMinutes;
if (minutes < 2)
txtbxname1.Text = "Shift2";
else if (minutes < thirdShiftMinutesValue)
txtbxname1.Text = "Shift3";
else if (minutes < firstShiftMinutesValue)
txtbxname1.Text = "Shift1";
else
txtbxname1.Text = "Shift2";
我正在从事一个涉及轮班工作的项目,因此我需要随着时间的推移正确显示轮班。我目前有 3 个班次(shifth = start shifthe = end),如下所示。 Shift1 上午 8 点到下午 4 点 Shift2 4:01PM-12:01AM 和 Shift3 12:02AM-7:59AM AM 时间覆盖了我的下午时间,因为我在军事时间所以他们永远不会改变它只是停留在 shift3。任何帮助将不胜感激,下面是我的代码。
private void shifts_Tick(object sender, EventArgs e)
{
if (DateTime.Now.TimeOfDay >= new TimeSpan(Settings.Default.shift1h,Settings.Default.shift1m, 0) && DateTime.Now.TimeOfDay <= new TimeSpan(Settings.Default.shift1he, Settings.Default.shift1me, 0))
{
txtbxname1.Text = "Shift1";
}
if (DateTime.Now.TimeOfDay >= new TimeSpan(Settings.Default.shift2h, Settings.Default.shift2m, 0) && DateTime.Now.TimeOfDay <= new TimeSpan(Settings.Default.shift2he, Settings.Default.shift2me, 0))
{
txtbxname1.Text = "Shift2";
}
if (DateTime.Now.TimeOfDay >= new TimeSpan(Settings.Default.shift3h, Settings.Default.shift3m, 0) && DateTime.Now.TimeOfDay <= new TimeSpan(Settings.Default.shift3he, Settings.Default.shift3me, 0))
{
txtbxname1.Text = "Shift3";
}
}
如果你用if...else if ...else就没有问题
if (DateTime.Now.TimeOfDay >= ...... first shift selection logic ....)
{
txtbxname1.Text = "Shift1";
}
else if (DateTime.Now.TimeOfDay >= ....second shift selection logic...)
{
txtbxname1.Text = "Shift2";
}
else // everything else is the third shift
{
txtbxname1.Text = "Shift3";
}
最简单的方法是从午夜开始获取当前 TimeSpan,计算分钟并将它们与基准值进行比较,例如(我只计算了第三班次的值):
var minutes = (DateTime.Now - DateTime.Today).TotalMinutes;
if (minutes < 2)
txtbxname1.Text = "Shift2";
else if (minutes < thirdShiftMinutesValue)
txtbxname1.Text = "Shift3";
else if (minutes < firstShiftMinutesValue)
txtbxname1.Text = "Shift1";
else
txtbxname1.Text = "Shift2";