2016-04-22 93 views
1

目的 DATETIME :38:20 PM字符串转换为任何格式

2016年4月4日上午11时08分10秒

我试过

protected void Page_Load(object sender, EventArgs e) 
{ 
    string dt1Valid = CheckDateFormat("3/30/2016 2:38:20 PM"); 
} 

public string CheckDateFormat(string checkDate) 
{ 
    string formats1 = getFormat(checkDate); 

    DateTime parsedDateTime; 
    DateTimeFormatInfo ukDtfi = new CultureInfo("de-DE", false).DateTimeFormat; 
    if (!DateTime.TryParseExact(checkDate, formats1, new CultureInfo("de-DE"), 
            DateTimeStyles.None, out parsedDateTime)) 
    { 
     return Convert.ToDateTime(parsedDateTime.ToString()).ToString(ukDtfi.ShortDatePattern + " " + ukDtfi.LongTimePattern); 

    } 
    else 
     return ""; 
} 
public string getFormat(string checkDate) 
{ 
    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", 

        "M/d/yyyy hh:mm:ss tt", "MM/dd/yyyy hh:mm:ss tt",          
        "d/M/yyyy hh:mm:ss tt", "dd/MM/yyyy hh:mm:ss tt", 
        "yyyy/M/d hh:mm:ss tt", "yyyy/MM/dd hh:mm:ss tt", 
        "M-d-yyyy hh:mm:ss tt", "MM-dd-yyyy hh:mm:ss tt",          
        "d-M-yyyy hh:mm:ss tt", "dd-MM-yyyy hh:mm:ss tt", 
        "yyyy-M-d hh:mm:ss tt", "yyyy-MM-dd hh:mm:ss tt", 
        "M.d.yyyy hh:mm:ss tt", "MM.dd.yyyy hh:mm:ss tt",          
        "d.M.yyyy hh:mm:ss tt", "dd.MM.yyyy hh:mm:ss tt", 
        "yyyy.M.d hh:mm:ss tt", "yyyy.MM.dd hh:mm:ss tt", 
        "M,d,yyyy hh:mm:ss tt", "MM,dd,yyyy hh:mm:ss tt",          
        "d,M,yyyy hh:mm:ss tt", "dd,MM,yyyy hh:mm:ss tt", 
        "yyyy,M,d hh:mm:ss tt", "yyyy,MM,dd hh:mm:ss tt", 
        "M d yyyy hh:mm:ss tt", "MM dd yyyy hh:mm:ss tt",          
        "d M yyyy hh:mm:ss tt", "dd MM yyyy hh:mm:ss tt", 
        "yyyy M d hh:mm:ss tt", "yyyy MM dd hh:mm:ss tt" 

        }; 

    DateTime dateValue; 

    foreach (string dateStringFormat in formats) 
    { 
     if (DateTime.TryParseExact(checkDate, dateStringFormat, 
            CultureInfo.InvariantCulture, 
            DateTimeStyles.None, 
            out dateValue)) 
      //Console.WriteLine("Converted '{0}' to {1}.", dateStringFormat, dateValue.ToString("yyyy-MM-dd"));     
      return dateStringFormat; 
    } 
    return null; 
} 

结果,我希望

30.03.2016 14:38:20 
04.04.2016 11:08:10 

结果我得到

01.01.0001 00:00:00 
01.01.0001 00:00:00 
+0

请检查您的'parsedDateTime'是否已设置。换句话说,解析不起作用,因此你最终得到默认的日期时间值 – Marshal

+0

@Marshal问题是我的getFormat方法,它总是返回null – pravprab

回答

7

这是简单的回答:这是不可能的,所以停止尝试。

证明:任何格式包括M.d.yyyy以及d.M.yyyy。在这种情况下,2016年2月1日可以表示

  • 第一二月或
  • 一月的第二个。

结论:任何格式阿译是不可能的,因为它不可能解析明确的日期,没有其他信息。

注意:这与C#或您选择的技术无关。您的要求已损坏。修复它们。

相关问题