顯示中文星期格式的小技巧

要顯示一個日期並使用中文的星期格式應該怎麼做呢?其實 ASP.NET 已經有現成的函式(WeekdayName)可以使用,不需要另外寫轉換程式。如下例...

 

要顯示一個日期並使用中文的星期格式應該怎麼做呢?其實 ASP.NET 已經有現成的函式(WeekdayName)可以使用,不需要另外寫轉換程式。如下例:

   label.Text = startDay.ToShortDateString+" ("+WeekdayName(DatePart(DateInterval.Weekday,startDay))+")"

如此顯示出來的就是如同

   2006/2/22 (星期二)

的中文格式了。在上述程式中,請特別注意 WeekdayName 與 DatePart 函式的配合使用。

在 WeekdayName 函式中原本有第二個 Optional 的參數 Abbreviate,如果你設定為 True,那麼它將以簡短格式出現(例如 Tuesday 變成 Tue)。不過實作之後,發現在中文版裡面並不起作用,所以不管你將這個參數設定為 True 或 False,它都一律是「星期二」的格式,而不會變成「二」。

 

如果你要達成上述功能,也非常的簡單,就是在原程式中的 WeekdayName 函式中再加入 Replace 函式,把「星期」二字濾掉就行了,如下例:

   Replace(WeekdayName(DatePart(DateInterval.Weekday, startDay), ), "星期", "")

很可惜, 在 C# 中並沒有這個函數可用。你除了必須匯入 Microsoft.VisualBasic 命名空間 (當然, 你還必須從網站屬性頁中匯入 Microsoft.VisualBasic 命名空間, 我想這就不用說了吧) 外, 還要把程式改一改, 範例如下:

using Microsoft.VisualBasic;
...
string wDay = DateAndTime.WeekdayName((int)startDay.DayOfWeek, true, Microsoft.VisualBasic.FirstDayOfWeek.Monday);

值得注意的是, 似乎必須將 FirstDayOfWeek 指定為 Monday 而不是你可能以為的 Sunday。中間那個參數設定為 true 或 false 並不影響結果。還有, 在 VB 中你可以不需要輸入後面那兩個 Optional 參數, 但在 C# 它並不允許, 所以請乖乖的把字打進去吧!


Dev 2Share @ 點部落