任何文化的DateTime.TryParse

Ank*_*bey 1 .net c# datetime parsing

这有很多线程,但我仍然被阻止在以下方面:

是)我有的:

我正在尝试构建windows phone App,它将选择一个人的出生日期

代码背后:

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;
}
Run Code Online (Sandbox Code Playgroud)

我需要的:

我希望它解析任何应该是文化独立的日期格式.

我尝试了什么:

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))
Run Code Online (Sandbox Code Playgroud)

但这太硬了,不会涵盖几个案例.

有没有办法以任何格式选择DOB?

任何帮助,将不胜感激.谢谢!!

Sha*_*aan 12

不是真的,因为每个人都有自己的日期格式.

还有,这个!

你基本上要做的是神奇地推断出上述XKCD 漫画的后半部分的日期.;)

也就是说,你可以尝试并执行此操作的唯一方法是使用您认为可能的每种格式解析字符串,然后在解析成功的每种情况下进行完整性检查.然而,所谓的理智检查会很困难... 11-02是指2月11日还是11月2日?你需要某种上下文.


Dmi*_*nko 6

对不起,但似乎不可能,因为日期时间可能不明确,这就是为什么误解为例如

"01/02/03"

01 Feb 2003 (Russia)

02 Jan 2003 (USA)

03 Feb 2001 (China)
Run Code Online (Sandbox Code Playgroud)

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