2013-06-21 128 views
0

我可以获得以下格式的日期:转换日期字符串的DateTime C#

07 December, 2012 
7 December, 2012 
December 07, 2012 
12/07/2012 
12/7/2012 
在一个字符串变量从我必须确定日期,月份,年份

。日期可以是任何上述格式的字符串。我想知道必须有一个可以处理日期为字符串数据类型的所有可能性的代码。我的意思是我想通过日期作为字符串,并获取DateTime对象。

回答

2

我不确定DateTime.TryParse()是否可以正确处理它们,但这是我第一次尝试。

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

+0

或DateTime.TryParseExact() –

+0

感谢DateTime.TryParse()效果很好。 –

+0

这不适用于任何文化。除此之外,如果问题是要确保给定的字符串可以解析为DateTime。 'TryParse'不能确保它只能确保不会引发异常。另外,'TryParseExact'会更好,因为它允许使用自定义格式字符串。 –

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)。

0
DateTime.Parse("date string")