2014-08-28 77 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);