在c#中找出字符串日期的日期时间格式

Dan*_*any 3 c# globalization datetime cultureinfo internationalization

我正在申请.该应用程序使用日期格式,如 "2012-11-21 15:22:35".
我已经知道格式了"yyyy-MM-dd HH:mm:ss".但是,如何以编程方式查找任意输入字符串的日期和时间格式?有没有办法做到这一点?

Roh*_*hit 8

这可能对你有帮助..(在数组中,添加更多格式来检查)

string[] formats = {"M/d/yyyy", "MM/dd/yyyy",                                    
                            "d/M/yyyy", "dd/MM/yyyy", 
                            "yyyy/M/d", "yyyy/MM/dd",
                            "M-d-yyyy", "MM-dd-yyyy",                                    
                            "d-M-yyyy", "dd-MM-yyyy", 
                            "yyyy-M-d", "yyyy-MM-dd",
                            "M.d.yyyy", "MM.dd.yyyy",                                    
                            "d.M.yyyy", "dd.MM.yyyy", 
                            "yyyy.M.d", "yyyy.MM.dd",
                            "M,d,yyyy", "MM,dd,yyyy",                                    
                            "d,M,yyyy", "dd,MM,yyyy", 
                            "yyyy,M,d", "yyyy,MM,dd",
                            "M d yyyy", "MM dd yyyy",                                    
                            "d M yyyy", "dd MM yyyy", 
                            "yyyy M d", "yyyy MM dd"
                           };

        DateTime dateValue;

        foreach (string dateStringFormat in formats)
        {
            if (DateTime.TryParseExact(strDateTime, dateStringFormat,
                                       CultureInfo.InvariantCulture,
                                       DateTimeStyles.None,
                                       out dateValue))
                //Console.WriteLine("Converted '{0}' to {1}.", dateStringFormat, dateValue.ToString("yyyy-MM-dd"));                
                Console.WriteLine( dateStringFormat);
        }
Run Code Online (Sandbox Code Playgroud)


Chr*_*man 5

我认为您会遇到日期字符串的问题,其中月份值为 <= 12,因为这意味着该字符串的格式可能是"yyyy-MM-dd""yyyy-dd-MM"

除非您在解析器中设置首选项,否则无法知道哪一个是正确的。

例如: 2012/08/07- “这可能是七月还是八月?”

你可以暴力破解它并希望有一个与格式匹配的 CultureInfo

 var datestring = "2012-10-05 12:00:03";
 DateTime time;
 var matchingCulture = CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(ci => DateTime.TryParse(datestring, ci, DateTimeStyles.None, out time))
Run Code Online (Sandbox Code Playgroud)


小智 -1

使用下面的代码:

字符串 sysFormat = CultureInfo.CurrentCulture.DateTimeFormat;