将字符串中的日期转换为DateTime C#

时间:2013-06-21 21:33:48

标签: c# asp.net .net string datetime

我以这些格式获取日期:

07 December, 2012
7 December, 2012
December 07, 2012
12/07/2012
12/7/2012

在一个字符串变量中,我必须从中确定日期,月份,年份。日期可以是上述任何格式的字符串。我想知道必须有一个代码可以处理日期的所有可能性作为字符串数据类型。我的意思是我想将日期作为字符串传递并获取DateTime对象。

3 个答案:

答案 0 :(得分:5)

是的,请使用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);

Demo

我使用CultureInfo.InvariantCulture来强制执行日期分隔符/,这通常是当前文化的日期分隔符(请参阅The "/" Custom Format Specifier)。

答案 1 :(得分:2)

我不确定DateTime.TryParse()是否正确处理它们,但这将是我尝试的第一件事。

请参阅http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx

答案 2 :(得分:0)

DateTime.Parse("date string" )