2013-04-08 154 views
3

我在使用星期幾查找日期方面存在問題。使用星期幾獲取日期

例如:我有過去的日期可以說,

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

2013年1月8日日星期幾是星期二。

現在我想要本週的星期二的日期。我如何做到這一點。

注意:過去的日期是動態的。它會在每個循環中改變。

+0

只是一個想法:如果你已經是在正確的天,你可以添加星期,日期,而在同一天入住。因此,請在該日期前添加幾周,直到您抵達當週。 – 2013-04-08 09:18:25

+0

是的。有沒有內置的方法可以做到這一點/ – PaRsH 2013-04-08 09:19:36

+0

'DateTime.AddDays(7)'是一個添加一個星期的選項。您可以將週數乘以7並添加它。請參閱[MSDN](http://msdn.microsoft.com/en-us/library/system.datetime.adddays(v = vs.100).aspx)。 – 2013-04-08 09:21:24

回答

9

可以使用枚舉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 2013-04-08 09:37:14

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