2013-04-08 7 views
3

У меня проблема с поиском даты с использованием дня недели.Дата получения с использованием дня недели

Например: у меня есть прошлое дата позволяет сказать,

Date date= Convert.TodateTime("01/08/2013"); 

8 января 2013-й день недели является вторник.

Теперь я хочу дату текущей недели текущей недели. Как я могу это сделать.

Примечание: прошедшая дата динамична. Он будет меняться в каждом цикле.

+0

Просто мысль: если вы уже находитесь на правильный день, вы можете добавить недель до даты, во время пребывания в тот же день. Поэтому добавьте недели до даты, пока вы не прибудете на текущую неделю. –

+0

есть. Есть ли встроенный метод для этого/ – PaRsH

+0

'DateTime.AddDays (7)' является возможностью добавить одну неделю. Вы можете умножить количество недель на 7 и добавить его. См. [MSDN] (http://msdn.microsoft.com/en-us/library/system.datetime.adddays (v = vs.100) .aspx). –

ответ

9

Вы можете использовать перечисление DayOfWeek

DayOfWeek перечисление представляет день недели в календарях , которые имеют семь дней в неделю. Значение констант в этом перечислении варьируется от DayOfWeek.Sunday до DayOfWeek.Saturday. Если отбрасывается на целое число, его значение варьируется от нуля (что указывает DayOfWeek.Sunday) до шести (что указывает на DayOfWeek.Saturday).

Мы можем использовать преобразование в целое число для вычисления разницы от текущей даты того же дня недели

DateTime dtOld = new DateTime(2013,1,8); 
int num = (int)dtOld.DayOfWeek; 
int num2 = (int)DateTime.Today.DayOfWeek; 
DateTime result = DateTime.Today.AddDays(num - num2); 

Это также представляется целесообразным создать метод расширения

public static class DateTimeExtensions 
{ 
    public static DateTime EquivalentWeekDay(this DateTime dtOld) 
    { 
     int num = (int)dtOld.DayOfWeek; 
     int num2 = (int)DateTime.Today.DayOfWeek; 
     return DateTime.Today.AddDays(num - num2); 
    } 
} 

и теперь вы можете позвонить ему с

DateTime weekDay = Convert.ToDateTime("01/08/2013").EquivalentWeekDay(); 
+0

Вы правы Стив ... Его работа. Благодаря :) – PaRsH

1

Может быть, я немного опоздал на вечеринку, но мое решение очень похоже:

DateTime.Today.AddDays(-(int)(DateTime.Today.DayOfWeek - DayOfWeek.Tuesday)); 

Это получит вторник текущей недели, где нахождение вторник является основной целью (я, возможно, неправильно понял вопрос) ,

0

Вы можете использовать это ....

public static void Main() 
{ 
    //current date 
    DateTime dt = DateTime.UtcNow.AddHours(6); 

    //you can use it custom date 
    var cmYear = new DateTime(dt.Year, dt.Month, dt.Day); 

    //here 2 is the day value of the week in a date 
    var customDateWeek = cmYear.AddDays(-2); 
    Console.WriteLine(dt); 
    Console.WriteLine(cmYear); 
    Console.WriteLine("Date: " + customDateWeek); 
    Console.WriteLine(); 
    Console.ReadKey(); 
} 
Смежные вопросы