2009-04-20 79 views
1

如何將1和7之間的數字轉換爲C#中的DateTime對象,該對象表示星期幾?這些數字來自我正在解析的XML文件。我正在檢索包含介於1和7之間的數字的每個實例,這表示星期日和星期六之間的星期幾。DateTime對象表示星期幾

+0

哪一天的哪一週?什麼時候?你是否想要採取任何日期(可能是任何一週的任何時間點),然後返回那週週一的日期。在你的腦海裏,星期天還是星期一開始呢? – 2009-04-20 17:55:39

+0

看到這個問題: http://stackoverflow.com/questions/764046/building-a-datetime-object-for-sql-database-insert/764172#764172 – 2009-04-20 17:58:56

回答

3

我會承擔強制轉換爲星期幾對象會給你一週中的一天

DayOfWeek day = (DayOfWeek)myInt; 

至於DateTime對象去,對象表示一個特定的日子,不一定是一週中的任意一天。如果這是您要實現的目標,您可以嘗試添加特定日期的#天。

http://msdn.microsoft.com/en-us/library/system.dayofweek.aspx

1

爲了得到DateTime,您需要一個特定的日期範圍,您希望工作日不在(因爲DateTime是特定的日期和時間,而工作日不是)。

有一個DayOfWeek枚舉(其值實際上範圍從0-6)。如果你需要的東西來表示星期幾,那麼你應該能夠在您的INT轉換爲DayOfWeek如..

DayOfWeek myDay = (DayOfWeek)yourInt; 

如果你需要一個實際的DateTime,你需要開始日期。你可以這樣做...

DateTime myDate = startDate.AddDays(
    (int)startDate.DayOfWeek >= yourInt ? 
     (int)startDate.DayOfWeek - yourInt : 
     (int)startDate.DayOfWeek - yourInt + 7); 

這會給你一個日期時間爲你描述的星期幾的下一個發生的實例。

1

A DateTime實例代表一個完整的日期,不僅可以表示一週的某一天。如果實際日期無關緊要,請採取任何星期一(假設0代表星期一)並且只添加當天的數字。

Int32 dayOfWeek = 3; 

// date represents a thursday since 2009/04/20 is a monday 
DateTime date = new DateTime(2009, 04, 20).AddDays(dayOfWeek); 

否則我同意亞當·羅賓遜的答案 - 如果你只是想舉行一個星期,堅持與DayOfWeek enum(零是星期日),而不是使用一個整數。

1

DayOfWeek.Sunday爲零,所以你可以用你知道是星期天任意固定的日期開始,並添加值6介於0和:我

public DateTime GetDayOfWeek(int dayOfWeek) 
{ 
    if (dayOfWeek < 0 || dayOfWeek > 6) throw new ArgumentOutOfRangeException(...); 

    // 4 January 2009 was a Sunday 
    return new DateTime(2009,1,4).AddDays(dayOfWeek); 
} 

不知道你爲什麼會想要這個雖然。

如果你只希望它獲得星期幾的本地化版本,如:

GetDayOfWeek(3).ToString("dddd"); // Gets name of day of week for current culture 

另一種是使用DateTimeFormatInfo.DayNames或DateTimeFormatInfo.AbbreviatedDayNames你想要的文化。