取得DayOfWeek的中文或其他語言名稱的簡單方法

  • 19057
  • 0
  • C#
  • 2008-12-07

先前對.NET Framework沒有現在熟的時候

(說先前不熟好像現在很熟?所以乾脆說沒現在熟好了,其實現在也沒多熟啦)

想說要取得今天星期幾是常常要用到的功能

先前對.NET Framework沒有現在熟的時候

(說先前不熟好像現在很熟?所以乾脆說沒現在熟好了,其實現在也沒多熟啦)

想說要取得今天星期幾是常常要用到的功能

可是DateTime.Now.DayOfWeek又都只能取得英文的星期幾

所以就寫了一個function: 

protected string getChtWeek(DateTime inputDT) {
    switch (inputDT.DayOfWeek.ToString()) {
        case "Monday": return "星期一";
        case "Tuesday": return "星期二";
        case "Wednesday": return "星期三";
        case "Thursday": return "星期四";
        case "Friday": return "星期五";
        case "Saturday": return "星期六";
        case "Sunday": return "星期日";
        default: return "系統無法判斷";
    }
}

 因為邏輯很簡單所以也沒什麼問題就可以簡單的用了

最近在整理先前的code的時候發現了這個function

又記得System.Globalization裡好像有不少處裡這種"語言、國家/地區、使用中的曆法、日期、貨幣和數字格式模式"的雜活

所以就翻了一下

果然有簡單的方法,用Stopwatch測試後跑的當然比自己寫的快

分享一下: 

System.Globalization.DateTimeFormatInfo.CurrentInfo.DayNames[(byte)DateTime.Now.DayOfWeek]

 這樣就能取得中文的今天星期幾囉,因為cloudio電腦的語言是zh-TW所以直接抓CurrentInfo就可以了

DayNames傳回的是長度為7的陣列而0是星期日

而DateTime.Now.DayOfWeek傳回的是DayOfWeek的列舉所以就很簡單的直接抓列舉來轉byte送進DayNames的陣列就可以抓了

(附帶一提(byte)DateTime.Now.DayOfWeek就可以取得今天是這禮拜的第幾天了)

而因為是在System.Globalization裡操作,想必要抓其他區域語言也很簡單

例如這樣: 

System.Globalization.DateTimeFormatInfo.GetInstance(new System.Globalization.CultureInfo("ja-JP")).DayNames[(byte)DateTime.Now.DayOfWeek]

改把CurrentInfo換成取得其他區域的就可以取得類似這樣日本的星期幾了