Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.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
C# TryParse无法正常转换连接日期,如;270619“;_C#_.net - Fatal编程技术网

C# TryParse无法正常转换连接日期,如;270619“;

C# TryParse无法正常转换连接日期,如;270619“;,c#,.net,C#,.net,问题是如何将随机格式(12/08/12-08-2019/12AUG/120819等)转换为日期时间。由于格式是不固定的,我使用的是TryParse,它在正常情况下有效,但在“120819”中无效 预计日期应为2019年6月27日00:00:00 编辑: 目前,我正在使用formats={“ddMMyy”,“ddMMyyyy”}及其工作方式,但对于其他格式(如dd-MM-yyyy),TryParseExact将失败。我想我需要把所有可能的格式都写下来。或者同时使用TryParse和TryParse

问题是如何将随机格式(12/08/12-08-2019/12AUG/120819等)转换为日期时间。由于格式是不固定的,我使用的是TryParse,它在正常情况下有效,但在“120819”中无效

预计日期应为2019年6月27日00:00:00

编辑:
目前,我正在使用formats={“ddMMyy”,“ddMMyyyy”}及其工作方式,但对于其他格式(如dd-MM-yyyy),TryParseExact将失败。我想我需要把所有可能的格式都写下来。或者同时使用TryParse和TryParseExact使用if else case。

尝试
TryParseExact
并提供格式
ddMMyy
,如下所示:

DateTime.TryParseExact(text, "ddMMyy", System.Globalization.CultureInfo.CurrentCulture,
                                      System.Globalization.DateTimeStyles.None, out dt);

它如何在不知道格式是什么的情况下解析它?120819可能是2019年8月12日或2019年12月8日,这取决于你问谁(当然可能是1919年,但那是另一回事)。。唯一的方法是告诉它格式是什么,ddMMyy或MMddyyTryParse不会比Parse猜测更多,它只是不会抛出异常。使用TryParseExact并传递适当的格式。看(这是许多问题中的一个,这个问题基本上每天被问一次),还有。你实际得到的是什么日期?如果你调试它,
result
中有什么内容?如果格式不固定,那么基本上你就无法解析它。@PeterSmith它的默认日期是01-01-0001 00:00:00当前我使用的格式={“ddMMyy”,“ddMMyyyy”}及其工作方式,但是TryParseExact对于其他格式(如dd-MM-yyyy)则会失败。您需要在
格式
数组中具有所有可能性。将这些视为您接受的格式。否则,您可以在解析字符串之前使用Regex自己格式化字符串,但这是额外的一步。谢谢@dvo。我可能只是一个接一个地使用TryParse和TryParseExact来避免编写所有的格式,因为有很多种格式。对我来说,这听起来是一种非常容易出错的方法。为什么你有这么多格式的可能性?
DateTime.TryParseExact(text, "ddMMyy", System.Globalization.CultureInfo.CurrentCulture,
                                      System.Globalization.DateTimeStyles.None, out dt);