DateTime Temp= new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, site.start.Hour, site.start.Minute, 0);
site.start.Hour
是23
我的问题是我的开始时间是23,但 温度 DateTime对象以12小时格式显示小时,即晚上11点。为什么以及如何以我传递site.start.Hour的24小时格式的格式获取Temp值?
答案 0 :(得分:2)
正如其他人已经评论过的那样,DateTime
不存储任何显示信息。
将变量悬停在调试器中时,将调用ToString()
并显示当前环境的值。您最有可能处于12小时格式的环境中。
要获取实际的小时数,应使用Hour
属性:
DateTime Temp = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, site.start.Hour, site.start.Minute, 0);
//should be 23
var tempHour = Temp.Hour;
您有不同的format strings,ToString
可以使用。如果未给出附加参数IFormatProvider
(例如CultureInfo
),则该字符串将显示在当前线程区域性中。
因此,当您想以特定区域性显示它时,请使用所需的区域性和格式字符串:
var cultureInfo = new CultureInfo("de-DE") // germany has 24 hour clock for example
var str = Temp.ToString("g", cultureInfo);
通常,如果只想在特定区域性中显示日期,则仅更改区域性。在大多数情况下,我们不想限制它,因此它始终是用户期望的格式。