具有 24 小时格式的 C# 日期时间对象,没有 AM PM



我正在尝试将DateTime格式设置为 24 小时。最初我有一个 12 小时表示的字符串。我找到的所有解决方案都是将DateTime转换为字符串。

string dateString = "Mon 16 Jun 8:30 AM 2008"; // <-- Valid
        string format = "dd/MM/yyyy HH:mm";
        DateTime dateTime;
        if (DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
            DateTimeStyles.RoundtripKind, out dateTime))
        {
            DateTime dateIn24 = dateTime;//  dateIn24 should be in 24 hour format
        }

我们可以在web.config做些什么吗?如下所示:

    <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB"/>

我得到了答案

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");如果其 en-US 12 小时格式默认情况下,它将基于系统日期时间设置为 en-US

根据 MSDN 文档,DateTime 实例仅包含信息,Hour 属性是 0 到 23 之间的整数:

属性值

类型:系统.Int32

小时部分,表示为 0 到 23 之间的值。

https://msdn.microsoft.com/library/system.datetime.hour(v=vs.110).aspx

如果您正在谈论格式化它,那么您需要将其转换为字符串,如注释中所述。

我所知,24 小时格式既不是如何解析或保存DateTime的问题,也不是格式的问题。假设您输入了 if 块(我在 LinqPad 中解析您的dateString没有成功),您可以通过以下方式获得格式正确的日期字符串

var dateStringWith24Hours = dateTime.ToString(dateString);

因为格式字符串中的HH意味着您希望将小时格式化为 24 小时。

最新更新