2012-06-05 5 views
1

пользователь просто введите день недели. Например, пользователь вступает в пятницу. Мне нужно найти точную дату данного дня и формат будет как dd.MM.yyyy. Но я не знаю, как я это делаю.
Пример:Получить дату и время с данного дня

label1 - Friday (entered by user) 
label2 - 08.06.2012 (found by system) 

label1 это просто строка (только пятницу). Он поступает из webservice как строковая переменная. Мне нужно найти дату и сравнить с сегодняшним днем, если она не равна или мала, чем сегодня, я даю дату предстоящей пятницы, иначе я дам дату пятницы на следующей неделе.

+0

Пятницы календарной недели ?????? –

+1

Дайте пользователю [DateTimePicker] (http://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker.aspx), таким образом, пользователь может выбрать пятницу, и он уже даст вам точную дату данного дня. Думал, это будет проще. –

+0

День недели выбирается из выпадающего списка? –

ответ

2

«Если это не равно или маленькие, чем сегодня я даю точную дату, то я дать следующую дату недели.»

Предполагая, что означает, что вы возвращаетесь всегда следующая датой в будущем данного дня недели , единственным исключением является то, что сегодня - данный день недели.

public static DateTime getNextWeekDaysDate(String englWeekDate) 
{ 
    var desired = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), englWeekDate); 
    var current = DateTime.Today.DayOfWeek; 
    int c = (int)current; 
    int d = (int)desired; 
    int n = (7 - c + d); 

    return DateTime.Today.AddDays((n >= 7) ? n % 7 : n); 
} 

Давайте тест:

DateTime Monday = getNextWeekDaysDate("Monday"); // 2012-06-11 
DateTime Tuesday = getNextWeekDaysDate("Tuesday"); // 2012-06-05 <-- !!! today 
DateTime Wednesday= getNextWeekDaysDate("Wednesday"); // 2012-06-06 
DateTime Thursday = getNextWeekDaysDate("Thursday"); // 2012-06-07 
DateTime Friday = getNextWeekDaysDate("Friday"); // 2012-06-08 
+0

Спасибо, это работает отлично. – Kadir

0
  1. Создать перемычку дней (т. Е. Понедельник - 0, вторник - 1 и т. Д.);
  2. Получите DateTime.Now DayOfWeek и произведите каким-либо способом это значение вашего перечисления.
  3. Рассчитать разницу между Now.DayOfWeek и пользовательским днем ​​недели;
  4. Использование DateTime.AddDays (разность) .DayofTheWeek;
0

получить текущее время с DateTime.Now
Текущего днем ​​DateTime.Now.DayOfWeek
Затем получить день недели введенной ваш пользователя
Тогда ваш результат DateTime.now.AddDays (NowDayOfWeek - UserDayOfWeek) ,

Смежные вопросы