Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串中的日期转换为DateTime C#_C#_Asp.net_.net_String_Datetime - Fatal编程技术网

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

将字符串中的日期转换为DateTime C#,c#,asp.net,.net,string,datetime,C#,Asp.net,.net,String,Datetime,我用以下格式获取日期: 07 December, 2012 7 December, 2012 December 07, 2012 12/07/2012 12/7/2012 在字符串变量中,我必须从中标识日期、月份和年份。日期可以是上述任何格式的字符串。我想知道一定有一个代码可以处理所有可能的日期作为字符串数据类型。我的意思是我想以字符串的形式传递日期并获取DateTime对象。我不确定DateTime.TryParse()是否能正确处理它们,但这将是我要尝试的第一件事 请参见是,与所有可能允许

我用以下格式获取日期:

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

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

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

请参见

是,与所有可能允许的格式一起使用:

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.TryParseExact()感谢DateTime.TryParse()。这对任何区域性都不起作用。除此之外,如果问题是确保给定的字符串可以解析为DateTime
TryParse
无法确保,它只能确保没有引发异常。另外,
TryParseExact
会更好,因为它允许使用自定义格式字符串。@Tim-同时,
Try Parse
验证传递的日期字符串是否正确?这就是
TryParse
的美妙之处。所以我会说+1Dennis@Tim-我恐怕要说-当类型为字符串时,我们甚至可以获得有效日期。
DateTime.Parse("date string" )