DateTime.TryParse到其他文化信息

Joa*_*son 6 c# date

我目前有一个时间报告项目,您输入日期并报告该日期的时间,(显示所有日期并以瑞典格式发送回后端等yy-mm-dd)但是如果我在我的计算机上有其他文化信息,dd-mm-yyyy就会解析错误的日期,它将无法正常工作.

这是我的代码

DateTime reportDate;
if (!DateTime.TryParse(result, out reportDate))
{
    ModelState.AddModelError("Date", "Felaktikt datum");
}
Run Code Online (Sandbox Code Playgroud)

这将采取我的yy-mm-dd解析,dd-mm-yyyy因为这是我的电脑设置.

Ale*_*ren 10

您可以像这样指定瑞典文化:

DateTime reportDate;

if (!DateTime.TryParse(result,
    System.Globalization.CultureInfo.GetCultureInfo("sv-SE"),
    System.Globalization.DateTimeStyles.None, out reportDate))
{
    ModelState.AddModelError("Date", "Felaktikt datum");
}
Run Code Online (Sandbox Code Playgroud)

  • reportDate是解析日期,因此您可以根据自己的喜好对其进行格式化.上面的代码将解析"15-08-28"之类的日期并将其转换为正确的DateTime. (3认同)
  • 无关的@JoakimCarlsson-默认情况下,您只是更改了*格式*的方式,这与解析无关。“ DateTime”不包含任何格式信息。 (2认同)

Ore*_*aki 6

DateTime.TryParse有一个额外的 2 个参数,第二个是IFormatProvider,您可以指定您希望它代表哪种文化。在你的情况下,sv-SE它是瑞典。

DateTime.TryParse(
    result,
    new CultureInfo("sv-SE"),
    DateTimeStyles.None,
    out reportDate
);
Run Code Online (Sandbox Code Playgroud)