this问题的扩展,我从数据库中提取日期并将其显示在网格中。
我有以下代码:
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小时时钟格式。我有两个问题:
答案 0 :(得分:36)
为什么dateSent.Value.ToString(“dd / MM / yyyy hh:mm:ss”)会返回12小时的时钟戳?
因为你要求它。这就是hh
的含义。 HH
是24小时。
如有疑问,请阅读custom date and time format strings上的文档。
hh
记录为
小时,使用从01到12的12小时制。“
HH
记录为:
小时,使用从00到23的24小时制。
进一步说明,此评论表明存在潜在的概念错误:
我可以看到DateTime?变量“dateSent”有一个24小时制的时间戳,例如14:50:34
DateTime
值不具有格式。这只是一个日期和时间。正如值{16}的int
是“0x10”和“16”,具体取决于您如何格式化,DateTime
也是如此。没有任何格式可以使用该值 - 仅调用ToString()
的结果将取决于文化设置。
答案 1 :(得分:10)
它应该像把你的h大写一样简单
HH:mm:ss
Here is a decent link to string formating date times
来自文章:
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
答案 2 :(得分:5)
使用大写字母表示小时:
HH:mm:ss
^^
答案 3 :(得分:4)