DateTime格式转换为字符串忽略AM / PM

时间:2012-04-28 12:12:24

标签: datetime .net-4.0 string-formatting

我正在尝试使用格式将DateTime对象转换为字符串,但由于某些奇怪的原因,它忽略了AM / PM。它只需要对象中的小时数。

我使用以下格式:

StartDate.ToString("yyyy-MM-dd hh:mm:ss.fff");

String.Format("0:yyyy-MM-dd hh:mm:ss.fff", StartDate);

我不认为两者之间存在差异,但只是想尝试一下。如果我传递值 4/28/2012 6:00:00 AM 4/28/2012 6:00:00 PM ,则结果相同 “2012-04-27 06:00:00.000”

1 个答案:

答案 0 :(得分:6)

您使用了使用12小时制的hh。您希望HH使用24小时制。

有关自定义格式字符串的详细信息,请参阅MSDN

请注意,您可能希望指定不变文化,除非您确实希望时间分隔符依赖于当前文化:

string formatted = StartDate.ToString("yyyy-MM-dd HH:mm:ss.fff",
                                      CultureInfo.InvariantCulture);

(请注意,如果您将格式字符串传递给ToString,则不应该使用括号。我会假设这只是问题中的拼写错误。)

如果希望使用12小时制,请在格式字符串中使用tt来生成AM / PM指示符。