创建日期时间对象时发生日期时间小时格式问题

时间:2018-12-02 01:48:51

标签: c# datetime

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值?

1 个答案:

答案 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 stringsToString可以使用。如果未给出附加参数IFormatProvider(例如CultureInfo),则该字符串将显示在当前线程区域性中。


因此,当您想以特定区域性显示它时,请使用所需的区域性和格式字符串:

var cultureInfo = new CultureInfo("de-DE") // germany has 24 hour clock for example
var str = Temp.ToString("g", cultureInfo);

通常,如果只想在特定区域性中显示日期,则仅更改区域性。在大多数情况下,我们不想限制它,因此它始终是用户期望的格式。