我有这个代码,它将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
我尝试过不同的文化,但没有任何效果。
答案 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
自定义格式字符串表示月份中的某一天 从01
到31
的号码。 使用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