簡體   English   中英

DateTime.TryParse適用於任何文化

[英]DateTime.TryParse for any culture

為此有很多線程,但是我仍然在以下方面受阻:

我有的:

我正在嘗試構建Windows Phone應用,它將選擇一個人的出生日期

背后的代碼:

string dateString = "";

  DateTime dt = DateTime.Now;
     if (value != null && DateTime.TryParse(value.ToString(),  culture, DateTimeStyles.None, out dt))
  {
    if (dt.Equals(DateTime.MinValue))
    {
      //dateString = "mm/dd/yyyy";
      return "";
    }
    else
      return dt.ToShortDateString();
  }
  else
    return dateString;
}

我需要的:

我希望它解析任何與文化無關的日期格式。

我試過的

1.我嘗試使用CultureInfo.InvariantCultute,CultureInfo.CurrentCulture

2.使用ExactParser嘗試如下:

string[] formats = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", "d/M/yyyy hh:mm:ss tt", "dd/MM/yyyy hh:mm:ss tt", "d/M/yyyy" , "dd/MM/yyyy" , "M/d/yyyy" ,"MM/dd/yyyy", 
               "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",   "dd/MM/yyyy hh:mm:ss", "d/M/yyyy h:mm:ss",
               "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",  "d/M/yyyy hh:mm tt", "d/M/yyyy hh tt",
               "M/d/yyyy h:mm", "M/d/yyyy h:mm", "d/M/yyyy h:mm", "d/M/yyyy h:mm",
               "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm","dd/MM/yyyy hh:mm", "dd/M/yyyy hh:mm"};


 if (value != null && DateTime.TryParseExact(value.ToString(), format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))

但這太硬了,無法涵蓋幾種情況。

有什么方法可以選擇任何格式的DOB?

任何幫助,將不勝感激。 謝謝!!

並非如此,因為每個人都有自己的日期格式。

另外,這個!

您基本上想做的是從上述XKCD 漫畫的后半部分神奇地推斷出日期。 ;)

也就是說,您可以嘗試並執行此操作的唯一方法是,以您認為可能的每種格式解析一個字符串,然后在解析成功的每種情況下進行完整性檢查。 但是,要進行上述健全性檢查會很困難... 11-02是2月11日還是11月2日? 您需要某種上下文。

抱歉,但這似乎是不可能的,因為日期時間可能不明確 ,這就是為什么會誤解例如

"01/02/03"

01 Feb 2003 (Russia)

02 Jan 2003 (USA)

03 Feb 2001 (China)

參見http://en.wikipedia.org/wiki/Date_format_by_country

這將嘗試所有文化:

public static bool TryParseAnyDate(string dateValue, out DateTime result)
{
  result = DateTime.MinValue;
  foreach (CultureInfo cultureInfo in CultureInfo.GetCultures(CultureTypes.AllCultures))
  {
    if (DateTime.TryParse(dateValue, cultureInfo, DateTimeStyles.None, out result))
    {
      return true;
    }
  }
  return false;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM