【问题标题】:Convert 24 hour datetime to 12 hour format without using string不使用字符串将 24 小时日期时间转换为 12 小时格式
【发布时间】:2018-03-05 12:08:33
【问题描述】:

我需要将日期时间转换为 24 小时格式,并且必须将其显示为 12 小时格式。我得到了答案,将其转换为 12 小时格式的字符串并显示为字符串。

但我需要显示为日期时间格式。所以我使用了 Convert.ToDateTime(datetime),但它再次将 datetime 更改为 24 小时格式,有没有更好的方法来转换 12 小时格式?

提前致谢。

【问题讨论】:

  • 您的问题令人困惑和困惑。 DateTime 没有格式。只有当您要求将其转换为字符串(或将字符串转换为DateTime)时,格式才会发挥作用,但在您的情况下尚不清楚如何。详细说明您的输入、您的预期输出以及您现在正在做的不满意的事情。
  • 参考此链接link
  • @JeroenMostert 根据日期时间,它取自设备时间,有些设备有 12 小时格式,有些有 24 小时格式,对我来说它不适合为我的应用程序进一步计算,所以我有将时间自定义为一种格式,就是这样!
  • 显示您如何获得“设备时间”的代码DateTime.Now 也没有格式——它以绝对刻度从起点开始测量时间。 DateTime.Now.ToString("s") 以 ISO 8601 格式给出当前日期和时间,与任何设置无关。但是,同样,这仅在您需要转换为字符串时才相关 - 否则,您应该尽可能长时间地将其保留为 DateTime。如果您需要解析 AM/PM 时间字符串,那是另一个问题。

标签: c# datetime date-conversion


【解决方案1】:

Following MSDN (DateTime Structure)

在内部,所有 DateTime 值都表示为自 0001 年 1 月 1 日午夜 12:00:00 以来经过的滴答数(100 纳秒间隔的数量)。实际的 DateTime 值与输入方式无关该值在显示在用户界面元素中或写入文件时出现。 DateTime 值的出现是格式化操作的结果。格式化是将值转换为其字符串表示形式的过程。

所以 DateTime 只是一些滴答声。

如果您想显示日期,那么您实际上是想将此数字格式化为人类可读的格式。

【讨论】:

    【解决方案2】:

    这是一个例子:

    Action<string> display = Console.WriteLine;
    DateTime now  = DateTime.Now;
    display($"24 hour format: {now:F}"); // 13:31:20
    display($"12 hour format: {now:hh:mm:ss}"); // 01:31:20
    display($"24 hour format: {now:HH:mm:ss}"); // 13:31:20
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      相关资源
      最近更新 更多