C# 将YYYYMMDD和DDMMYYYY两种不同格式的日期字符串转换为c中的日期#
尝试了下面的格式,但只处理一种格式C# 将YYYYMMDD和DDMMYYYY两种不同格式的日期字符串转换为c中的日期#,c#,datetime,C#,Datetime,尝试了下面的格式,但只处理一种格式 string date = "20100102"; DateTime datetime = DateTime.ParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture); 而不是 DateTime datetime = DateTime.ParseExact(date, "yyyyMMdd", CultureInfo.InvariantCultu
string date = "20100102";
DateTime datetime = DateTime.ParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture);
而不是
DateTime datetime = DateTime.ParseExact(date, "yyyyMMdd",
CultureInfo.InvariantCulture);
……试试看:
var dateString = "20100102";
var formats = new String[]{"yyyyMMdd",
"ddMMyyyy"};
DateTime dateValue;
if (DateTime.TryParseExact(dateString, formats,
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dateValue))
Console.WriteLine ("Success");
MSDN在DateTime.TryParseExact
上有这样一句话:
使用指定的格式数组、区域性特定格式信息和样式,将日期和时间的指定字符串表示形式转换为其等效的日期时间字符串表示的格式必须至少与指定格式中的一种完全匹配。该方法返回一个值,该值指示转换是否成功
告诉我更多
System.DateTime
支持),就会出现歧义。可能的示例:“20111220”
(2011-Dec-20或1220年11月20日)。问题是,实际上您可能会遇到类似“20122011”的值。解析的两种变体都是有效的,但结果将是一个字面上的年份。您可以尝试猜测,就像WebBrowser猜测编码一样,但它始终是一个猜测:@Christopher true,但OP不寻找YYYYDDMM。TryParseExact专为您事先不知道确切格式的情况而设计。我发现它在我之前的项目中工作得非常好mentioned@MickyD谢谢,但它返回的是一个假的20180808@Prince正确的格式是yyyyymmdd
和ddMMyyyy
,y
和d
必须为小写。我试过20180808,它返回的是真的哇!感谢您发现这一点,并编辑@currapickt:)