我以格式hh:mm:ss开始时间,然后以小时为单位输入持续时间并选择星期几。从开始时间和持续时间获取结束时间
我想根据上述参数计算结束时间。
例如:开始时间是00:00:00,进入duartion是48小时,星期几是星期天。结束时间必须是周二的00:00:00。
怎么办?
我以格式hh:mm:ss开始时间,然后以小时为单位输入持续时间并选择星期几。从开始时间和持续时间获取结束时间
我想根据上述参数计算结束时间。
例如:开始时间是00:00:00,进入duartion是48小时,星期几是星期天。结束时间必须是周二的00:00:00。
怎么办?
试试这个:
//assuming that you have a validation for your startTime that this will always on this format "HH:mm:ss"
private static string GetEndTime(string startTime, int duration, DayOfWeek dayOfWeek)
{
DateTime startDateTime = DateTime.Parse(startTime);
DateTime endDateTime = startDateTime.AddHours(duration);
return endDateTime.ToString("HH:mm:ss");
}
private static DayOfWeek GetEndDay(int duration, DayOfWeek dayOfWeek)
{
int days = duration/24;
DayOfWeek endDay = dayOfWeek + days;
return endDay;
}
static void Main()
{
string testStartTime = "00:00:00";
DayOfWeek startDay = DayOfWeek.Sunday;
int duration = 48;
string endTime = GetEndTime(testStartTime, duration, startDay);
DayOfWeek endDay = GetEndDay(duration, startDay);
Console.WriteLine("End Time is {0} hours on {1}", endTime, endDay.ToString());
}
考虑使用DateTime.AddHours()功能
时间跨度添加到一个DateTime:
var today = System.DateTime.Now;
var duration = new System.TimeSpan(48, 0, 0, 0);
var endDateTime= today.Add(duration);
public static void Main()
{
var today = "Sunday";
DayOfWeek dw;
DayOfWeek.TryParse(today, true, out dw);
int hours = 48;
int days = hours/24;
int remainder = hours % 24;
DayOfWeek endDay = dw + days;
Console.Write("End time: {0} at {1}", endDay, remainder);
}
由于飞跃/ DST /等等,请记住,增加48小时不会总是导致两个'DayOfWeek's传球保持相同的时间。 –
string start = "00:00:00";
DayOfWeek startDay = DayOfWeek.Sunday;
int duration = 48;
DateTime date = DateTime.Parse(start);
while(date.DayOfWeek != startDay)
{
date = date.AddDays(1);
}
date = date.AddHours(duration);
DayOfWeek resultDay = date.DayOfWeek;
string time = date.ToLongTimeString();
请仔细阅读本链接 http://stackoverflow.com/questions/12521366/getting-time-span-between-two-times-in-c 希望它有帮助。 –