我得到以下格式的日期:
07 December, 2012
7 December, 2012
December 07, 2012
12/07/2012
12/7/2012
在一个字符串变量中,我必须从中识别日期、月份、年份。日期可以是上述任何格式的字符串。我想知道必须有一个代码可以将日期的所有可能性处理为字符串数据类型。我的意思是我想将日期作为字符串传递并获取 DateTime 对象。
是的,DateTime.ParseExact
与所有可能的允许格式一起使用:
var strings = new[] { "07 December, 2012", "7 December, 2012", "December 07, 2012", "December 07, 2012", "12/07/2012", "12/7/2012" };
var formats = new[]{"dd MMMM, yyyy", "d MMMM, yyyy", "MMMM dd, yyyy", "dd/MM/yyyy", "dd/M/yyyy"};
var dates = strings
.Select(s => DateTime.ParseExact(s, formats, CultureInfo.InvariantCulture, DateTimeStyles.None));
foreach(DateTime d in dates)
Console.WriteLine("Year:{0} Month:{1} Day:{2}", d.Year , d.Month , d.Day);
我曾经CultureInfo.InvariantCulture
强制执行日期分隔符/
,这通常是您当前文化的日期分隔符(请参阅“/”自定义格式说明符)。
我不确定 DateTime.TryParse() 是否正确处理它们,但这将是我尝试的第一件事。
DateTime.Parse("date string" )