C# 从ShortFormat C解析DateTime#

C# 从ShortFormat C解析DateTime#,c#,C#,我正在尝试将年-月的短日期格式的字符串转换为日期时间 例如,“2018-04”转换为日期时间2018-04-1 00:00:00 我使用以下语法来实现这一点 DateTime newDate=DateTime.ParseExact("yyyy-MM",oldString,CultureInfo.CurrentCulture) 上述场景有效。但有一个小问题 我认为这种语法也可以处理2018-4这样的格式(注意,月份中缺少尾随零) 但它没有,并抛出异常,无效的日期时间格式 在我尝试黑客解决方案之前

我正在尝试将年-月的短日期格式的字符串转换为日期时间 例如,“2018-04”转换为日期时间2018-04-1 00:00:00

我使用以下语法来实现这一点

DateTime newDate=DateTime.ParseExact("yyyy-MM",oldString,CultureInfo.CurrentCulture)
上述场景有效。但有一个小问题

我认为这种语法也可以处理2018-4这样的格式(注意,月份中缺少尾随零)

但它没有,并抛出异常,无效的日期时间格式


在我尝试黑客解决方案之前,还有其他解决方案吗?

无需执行解决方案
yyy-M
将解析一位数和两位数的月份数字:

DateTime newDate = DateTime.ParseExact(oldString, "yyyy-M", CultureInfo.CurrentCulture);

请注意,我已经交换了前两个参数,因为它们的顺序不正确

无需采取变通措施
yyy-M
将解析一位数和两位数的月份数字:

DateTime newDate = DateTime.ParseExact(oldString, "yyyy-M", CultureInfo.CurrentCulture);

请注意,我已经交换了前两个参数,因为它们的顺序错误

只是为了澄清一下,您希望收到两种格式的日期吗?即“2016-04”和“2016-4”。这些数据来自哪里?你能强制你得到它的格式吗?当然
DateTime.ParseExact(“yyyy-MM”,oldString
是完全错误的,应该是
DateTime.ParseExact(oldString,“yyyy-MM”)
所以我很惊讶你说这样行吗?只是澄清一下,你希望收到两种格式的日期?即“2016-04”和“2016-4”。这些数据来自哪里?你能强制执行你得到的格式吗?当然
DateTime.ParseExact(“yyy-MM”,oldString
完全错误,应该是
DateTime.ParseExact(oldString),“yyyy-MM”
所以我很惊讶你说这样行吗?