如何将特定日期从 CET 转换为 IST 并排除周末后获取给定特定日期的目标日期



我正在尝试根据用户输入中的特定日期获取未来的日期和时间。我需要从 CET 转换为 IST,然后根据某些条件添加一些小时,它必须给我们一个未来的日期,不包括周末和特定时间,例如,如果时间大于下午 5 点,那么它必须给出下一个可用的日期。

我有一个 MVC 表单,它接受一个日期,然后我必须在 C# 代码中将此日期转换为将来的日期。

谁能帮我解决这个问题。

如果需要,我可以在伪代码中给出逻辑。

请帮我解决这个问题。因为我无法弄清楚如何。

在一个简单的WinForms应用程序上,该应用程序具有dateTimePicker和用于触发事件的按钮:

private void button4_Click(object sender, EventArgs e)
{
DateTime d = dateTimePicker1.Value;
d = d.AddHours(3.5); // add 3.5 hours to move from CET to IST
switch(d.DayOfWeek)
{
case DayOfWeek.Saturday:
d = d.AddDays(2); // increment day to Monday
break;
case DayOfWeek.Sunday:
d = d.AddDays(1); // increment day to Monday
break;
}
MessageBox.Show(d.ToString("R")); // show value of d in machines regional format
}

希望这能给你一些想法!

感谢您的帮助。我使用了您的代码并进一步使用了我自己的逻辑,并提出了最终解决方案,该解决方案按预期给了我目标日期。

以下是我的代码:-

日期时间 d = 转换.到日期时间(模型。接收日期(;

DateTime end_time = new DateTime(1901,01,01, 17, 0 ,0);
TimeSpan timeFrom = TimeSpan.Parse(d.ToString("HH:mm"));
TimeSpan timeTo = TimeSpan.Parse(end_time.ToString("HH:mm"));
TimeSpan timediff = timeTo.Subtract(timeFrom);
if (model.Complexity == "L")
{
if (timediff.TotalHours >= 4)
{
d = d.AddHours(4);
}
else if (timediff.TotalHours < 4 && timediff.TotalHours > 0)
{
d = d.AddHours(timediff.TotalHours + 15 + (4 - timediff.TotalHours));
}
else if (timediff.TotalHours < 0)
{
d = d.AddHours(timediff.TotalHours + 15 + 4);
}
}
else if (model.Complexity == "M")
{
if (timediff.TotalHours >= 9)
{
d = d.AddHours(9);
}
else if (timediff.TotalHours < 9 && timediff.TotalHours > 0)
{
d = d.AddHours(timediff.TotalHours + 15 + (9 - timediff.TotalHours));
}
else if (timediff.TotalHours < 0)
{
d = d.AddHours(timediff.TotalHours + 15 + 9);
}
}
else if (model.Complexity == "H")
{
var day = d.ToString("ddd");
if (day == "Mon")
{
d = d.AddHours(120);
}
else if (day == "Tue" || day == "Wed" || day == "Thu")
{
d = d.AddHours(120 + 48);
}
else if (day == "Fri" && timediff.TotalHours > 0)
{
d = d.AddHours(120 + 48);
}
else if (day == "Fri" && timediff.TotalHours < 0)
{
d = d.AddHours(timediff.TotalHours + 15 + 48 + 120);
}
}
switch (d.DayOfWeek)
{
case DayOfWeek.Saturday:
d = d.AddDays(2);// increment day to Monday
break;
case DayOfWeek.Sunday:
d = d.AddDays(1); // increment day to Monday
break;
}
d = d.AddHours(3.5);
model.TargetDate = d; // show value of d 

最新更新