C# 在将特定日期从CET转换为IST并排除周末后,如何获得给定特定日期的目标日期
我试图根据用户输入的特定日期获取未来的日期和时间。我需要将CET转换为IST,然后根据一些条件增加一些小时,它必须给我们一个未来日期,不包括周末和特定时间,例如,如果时间大于下午5点,则必须给下一个可用的日期 我有一个MVC表单,它接受一个日期,然后我必须将这个日期转换为C代码中的未来日期 有人能帮我吗 如果需要,我可以用伪代码给出逻辑C# 在将特定日期从CET转换为IST并排除周末后,如何获得给定特定日期的目标日期,c#,datetime,C#,Datetime,我试图根据用户输入的特定日期获取未来的日期和时间。我需要将CET转换为IST,然后根据一些条件增加一些小时,它必须给我们一个未来日期,不包括周末和特定时间,例如,如果时间大于下午5点,则必须给下一个可用的日期 我有一个MVC表单,它接受一个日期,然后我必须将这个日期转换为C代码中的未来日期 有人能帮我吗 如果需要,我可以用伪代码给出逻辑 请帮我做这件事。因为我不知道如何在一个简单的WinForms应用程序上使用dateTimePicker和按钮触发事件: private void button4
请帮我做这件事。因为我不知道如何在一个简单的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
}
希望这能给你一些想法 谢谢你的帮助。我使用了你的代码,并进一步使用了我自己的逻辑,并提出了最终的解决方案,它为我提供了预期的目标日期 以下是我的密码:- DateTime d=Convert.ToDateTime(model.receiveddate)
DateTime end_time=newdatetime(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”)
{
如果(timediff.TotalHours>=4)
{
d=d.AddHours(4);
}
否则如果(timediff.TotalHours<4&&timediff.TotalHours>0)
{
d=d.AddHours(timediff.TotalHours+15+(4-timediff.TotalHours));
}
否则如果(时间差总小时数<0)
{
d=d.AddHours(timediff.TotalHours+15+4);
}
}
else if(model.Complexity==“M”)
{
如果(timediff.TotalHours>=9)
{
d=d.AddHours(9);
}
否则如果(timediff.TotalHours<9和timediff.TotalHours>0)
{
d=d.AddHours(timediff.TotalHours+15+(9-timediff.TotalHours));
}
否则如果(时间差总小时数<0)
{
d=d.AddHours(timediff.TotalHours+15+9);
}
}
else if(model.Complexity==“H”)
{
var日=d.ToString(“ddd”);
如果(日=“周一”)
{
d=d.AddHours(120);
}
否则,如果(日期=“星期二”|日期=“星期三”|日期=“星期四”)
{
d=d.AddHours(120+48);
}
否则如果(天==“星期五”&&timediff.TotalHours>0)
{
d=d.AddHours(120+48);
}
否则如果(天==“星期五”&&timediff.TotalHours<0)
{
d=d.AddHours(timediff.TotalHours+15+48+120);
}
}
开关(d.DayOfWeek)
{
星期六,星期六:
d=d.AddDays(2);//增加到星期一的天数
打破
星期日,星期日:
d=d.AddDays(1);//增加到星期一的天数
打破
}
d=d.AddHours(3.5);
model.TargetDate=d;//显示d的值
谢谢。但是我想把结果放在一个文本框中,我已经在使用MVC框架,所以不能使用Winform,那么我应该把代码放在控制器的什么地方?我需要将结果绑定到目标日期的文本框中。此外,我需要查看转换为IST后的时间,如果是在8到5之间,则根据条件添加4小时、9小时或45小时,并应给出日期,记住截止时间是下午5点,例如,如果我们将IST设置为下午1点,则如果我们必须添加4小时,则目标日期将是相同的,但如果我们必须添加9小时,则直到下午5点,则目标日期将是相同的第二天早上8点5个小时后,如果看不到您的代码,我真的说不出最好放在哪里。只要DateTime对象中有该值,代码就可以正常工作,您不需要使用MessageBox来显示它,只需调用如下内容:textBox1.text=d.ToString(“R”),或者类似于更新文本框值的内容。我有一个名为Received Date的文本框,我使用jquery日期时间选择器获取日期和时间。。根据这个文本框值,我需要根据上述条件转换并获取目标日期和时间。jQuery(document).ready(函数(){'use strict';jQuery('#txtreciveddate').datetimepicker();});在模型中,我将类设置为publicstringreceiveddate publicstringreceiveddate{get;set;},我可以添加小时数。但是我需要得到下午5:00的结束时间,然后从ist中减去,如果差值大于4小时,那么加上4小时,目标日期保持不变。但是如果差异小于4小时,则添加差异,然后添加小时,直到第二天早上8点,然后添加剩余的小时,这比添加的差异少4小时。因此,我想知道如何提取日期并将时间设置为结束时间,下午5点…似乎很复杂!!!!
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