2013-09-26 4 views
0

У меня есть время начала в формате hh: mm: ss, а затем введите продолжительность в часах и выберите день недели.Время окончания и время начала

Я хочу рассчитать время окончания, основанное на вышеуказанных параметрах.

Например: время начала 00:00:00 и ввод в день 48 часов с днем ​​недели в воскресенье. Время окончания должно быть 00:00:00 часов во вторник.

Как это сделать?

+3

Пожалуйста, прочтите эту ссылку http://stackoverflow.com/questions/12521366/getting-time-span-between-two-times-in-c Надеюсь, что это поможет. –

ответ

1

попробовать это:

//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()); 

} 
1

Добавить TimeSpan к DateTime:

var today = System.DateTime.Now; 
var duration = new System.TimeSpan(48, 0, 0, 0); 
var endDateTime= today.Add(duration); 
2
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); 
} 
+0

Имейте в виду, что из-за прыжков/DST/и т. Д. Добавление 48 часов не всегда приведет к тому, что ровно два 'DayOfWeek', проходящие в одно и то же время. –

1
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(); 
Смежные вопросы