c#中的字符串到日期的转换
本文关键字:日期 转换 字符串 | 更新日期: 2023-09-27 17:59:05
我有一个字符串"13/6/2011"。我必须将其转换为DateTime。为此,我使用
DateTime.ParseExact("13/6/2011","DD/MM/YYYY",null);
但它显示
String was not recognized as a valid DateTime
例外。知道为什么吗?
除了ChrisF提到的"6"与"06"问题外,您的格式字符串也不正确。月份的日期是"dd",年份是"yyyy",所以您应该有一个"dd/MM/yyyy"的格式。
此外,我建议显式传递CultureInfo.InvariantCulture
,否则"/"可能会被视为不同的(特定于区域性的)日期分隔符。(另一种选择是引用斜杠,但我认为使用不变的文化会更加固定。)
换句话说,我会使用这样的东西:
// Sample for text: 13/06/2011
DateTime date = DateTime.ParseExact(text, "dd/MM/yyyy",
CultureInfo.InvariantCulture);
如果不一定有两位数的日期或月份,请使用:
DateTime date = DateTime.ParseExact(text, "d/M/yyyy",
CultureInfo.InvariantCulture);
我还不清楚是否也能处理(比如)2011年6月13日。
您的月份格式是MM
,但您只为月份指定了一个位数。
如果您输入06
,它应该有效,或者如果您使用M
格式说明符表示月份,它将使用一个数字。
此外(正如Jon Skeet所提到的),您使用了DD
和YYYY
,而不是dd
(或d
来处理个位数的天数)和yyyy
。
有关各种日期-时间格式说明符的完整列表,请参阅此MSDN页面。
您可能想要使用不同格式的字符串:
DateTime.ParseExact("13/6/2011","dd/MM/yyyy",null);
或者您可以使用d
,它是MSDN上定义的"短日期格式"。
DateTime.ParseExact("13/6/2011","d",null);
DateTime dt= DateTime.ParseExact("13/06/2011","dd/MM/yyyy",null);
DateTime.ParseExact("13/6/2011","DD/M/YYYY",null);