DateTime.Value.ToString(格式)给了我12小时的时钟
这个问题的扩展,我从数据库中提取日期并将其显示在网格中。
我有以下代码:
string date = ""; DateTime? dateSent; if (row["DateSent"] != DBNull.Value) dateSent = (DateTime)row["DateSent"]; else dateSent = null; date = (dateSent.HasValue ? dateSent.Value.ToString("dd/MM/yyyy hh:mm:ss") : null);
当我在这段代码的末尾添加一个断点时,我可以看到DateTime?
变量“dateSent”具有24小时制时钟,例如14:50:34。 但是,当我检查string
变量“date”的值时 – 它有一个12小时的时钟格式,例如02:50:34。
我不打算转换成12小时时钟格式。 我有两个问题:
- 为什么dateSent.Value.ToString(“dd / MM / yyyy hh:mm:ss”)返回12小时时钟戳?
- 如何避免这种情况并使用24小时制版本?
为什么dateSent.Value.ToString(“dd / MM / yyyy hh:mm:ss”)返回12小时时钟戳?
因为你要求它。 那就是那个意味着什么。 HH
是24小时。
如有疑问,请阅读有关自定义日期和时间格式字符串的文档。
hh
记录为
小时,从01到12使用12小时制。“
HH
记录为:
小时,使用00至23的24小时制。
作为进一步说明,此评论表明潜在的概念错误:
我可以看到DateTime? 变量“dateSent”具有24小时制时钟,例如14:50:34
DateTime
值没有格式。 这只是一个日期和时间。 正如值为16的int
是“0x10”和“16”,具体取决于您如何格式化, DateTime
也是如此。 没有与该值相关的格式 – 仅调用ToString()
的结果将取决于文化设置。
它应该像大写你的h一样简单
HH:mm:ss
这是字符串格式化日期时间的一个不错的链接
来自文章:
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);
请注意,小时是16
String.Format("{0:h hh H HH}", dt); // "4 04 16 16" hour 12/24
使用大写字母表示小时:
HH:mm:ss ^^
如果要显示24小时字符串,请使用以下格式字符串 :
HH:mm:ss
希望能帮助到你