2014-08-28 75 views
2

我試圖創建的列表時間我的代碼就像創建的時間列表

var hours = Enumerable.Range(00, 24).Select(i => i.ToString("D2"))); 

它產生以24小時格式 這樣的事情,但實際上我需要同樣的事情不是24個小時,但像12與AM PM後綴後

什麼是生成小時列表的最佳方式與00.00 AM/PM格式化

感謝

回答

4
var hours = Enumerable.Range(00, 24).Select(i => (DateTime.MinValue.AddHours(i)).ToString("hh.mm tt")); 
7

你ç創建一個DateTime實例,然後使用ToString格式的hh.mm tt

var hours = Enumerable.Range(00, 24) 
    .Select(i => new DateTime(2000,1,1,i,0,0).ToString("hh.mm tt")); 

您需要執行使用類似ToArray()得到結果,因爲LINQ的行爲是延遲執行的查詢。

1
var startDate = DateTime.Today; 
IEnumerable<DateTime> listOfHours = Enumerable.Range(0, 24).Select(h => startDate.AddHours(h)); 
3

你正在處理的時間,因此,使用合適的類型,DateTime,似乎比用int更好:

var hours = from i in Enumerable.Range(0, 24) 
      let h = new DateTime(2014, 1, 1, i, 0, 0) 
      select h.ToString("t", CultureInfo.InvariantCulture);