【问题标题】:DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") is returning AM time instead of PM time?DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") 返回上午时间而不是下午时间?
【发布时间】:2011-12-29 00:39:21
【问题描述】:

我正在尝试通过DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")获取当前时间

但是,这与我们想要的时间相差 12 小时。

例如:

它吐出什么:11/14/2011 2:24:56 am

我们想要什么:11/14/2011 2:24:56 pm

我们犯了什么菜鸟错误?

非常感谢任何帮助:)

【问题讨论】:

  • am/pm 标记在哪里添加,因为它不在您的格式化字符串中,例如'tt'?
  • 由于某种原因,您所说的格式字符串生成的 (11/14/2011 2:24:56 am) 与我期望您发布的格式字符串 (yyyy-MM-dd hh:mm:ss) 生成的内容非常不同。你确定吗?

标签: .net datetime


【解决方案1】:

在 C#6.0 中,您还可以在使用字符串插值时提供一种新的格式化日期的方法,例如

$"{DateTime.Now:yyyy-MM-dd HH:mm:ss}"

不能说它更好,但如果将格式化的 DateTime 包含在更长的字符串中,它会稍微干净一些。

More about string interpolation.

【讨论】:

    【解决方案2】:

    使用HH 表示 24 小时格式:

    DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
    

    或者tt 格式说明符用于AM/PM 部分:

    DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt")
    

    查看custom Date and Time format strings 文档。

    【讨论】:

    • 我不得不使用 MomentJS 来做这件事,这样可以节省很多时间 :)
    猜你喜欢
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多