DateTime格式转换

时间:2013-02-22 14:53:19

标签: c# datetime

在我的c#程序中,用户可以从winforms日期时间选择器中选择日期。这名为dtpOutbox

这是我的代码:

DateTime selectedDate = dtpOutbox.Value.Date;
TimeSpan ts = new TimeSpan(23,59,59);
DateTime endOfSelectedDay = selectedDate + ts;

Console.WriteLine(selectedDate.ToString("yyyy-MM-dd hh:mm:ss"));
Console.WriteLine(endOfSelectedDay.ToString("yyyy-MM-dd hh:mm:ss"));

现在如果今天的日期是2月22日,那么我的理解是这应该输出(所需的输出):

2013-02-22 00:00:00
2013-02-22 23:59:59

但事实并非如此。我的输出是:

2013-02-22 12:00:00
2013-02-22 11:59:59

我很确定这是一个格式化问题,因为当我显示没有格式字符串的DateTime值(selectedDate.ToString())时,它会正确显示22/02/2013 00:00:00。但是我需要的日期格式为22-02-2013 00:00:00。

有什么想法为什么C#决定我的第一次约会将是中午,而我的第二次约会将是11:59:59?

2 个答案:

答案 0 :(得分:8)

hh是12小时时钟输出。

HH是24小时制输出。

您使用的是小写变体,但未输出AM / PM值。这可能是混淆的原因。

答案 1 :(得分:5)

这就是你要找的东西:

Console.WriteLine(selectedDate.ToString("yyyy-MM-dd HH:mm:ss"));

对于24小时格式,请使用HH代替hh

您可能需要查看Custom Date and Time Formats documentation