Datetime.parseExact给出(1-9)day的值,单个数字,不带0

时间:2016-06-09 10:49:28

标签: c# datetime

我有这个代码,它将day的值设为1,2,3 ..而不是01,02,03 ..

(DateTime.ParseExact("20160416", "yyyyMMdd", CultureInfo.InvariantCulture))

给出:4/16/2016 12:00:00 AM.

我需要04/16/2016 12:00:00 AM

我尝试过不同的文化,但没有任何效果。

2 个答案:

答案 0 :(得分:5)

DateTime不存储任何格式信息,它只是表示日期和时间的结构。 ParseExact正在正确解析您的日期字符串。

如果要格式化,请为DateTime.ToString提供格式,例如:

var formattedDate = dateTime.ToString("MM/dd/yyyy hh:mm:ss tt");

请参阅this fiddle

答案 1 :(得分:1)

DateTime.ParseExact返回DateTime,其中没有任何隐式格式。当您获得 textual (a.k.a。string)表示时,此“格式”概念适用。

您没有告诉您使用这个4/16/2016 12:00:00 AM字符串的方式和位置,但是如果您希望将日期与前导零相关联,则可以将The dd format specifier正确的一起使用文化(日历和时间指示符)。

  

dd自定义格式字符串表示月份中的某一天   从0131的号码。 使用a格式化一位数的日期   领先零

DateTime dt = DateTime.ParseExact("20160416", "yyyyMMdd", CultureInfo.InvariantCulture);
string str = dt.ToString("MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
// 04/16/2016 12:00:00 AM