将dd/mm/yyyy格式化字符串转换为Datetime

Faw*_*hah 96 c# string datetime

我是DotNet和C#的新手.我想将mm/dd/yyyy格式的字符串转换为DateTime对象.我尝试了下面的解析函数,但它抛出了运行时错误.

DateTime dt=DateTime.Parse("24/01/2013");
Run Code Online (Sandbox Code Playgroud)

关于如何将其转换为日期时间的任何想法?

Hab*_*bib 243

您需要使用DateTime.ParseExact格式"dd/MM/yyyy"

DateTime dt=DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

如果您使用d/M/yyyy格式,它会更安全,因为它可以处理单个数字和两位数的日/月.但这实际上取决于您是否期望单/双位数值.


day/Month/Year对于某些文化,您的日期格式可能是可接受的日期格式.例如,加拿大文化的en-CA DateTime.Parse工作方式如下:

DateTime dt = DateTime.Parse("24/01/2013", new CultureInfo("en-CA"));
Run Code Online (Sandbox Code Playgroud)

要么

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-CA");
DateTime dt = DateTime.Parse("24/01/2013"); //uses the current Thread's culture
Run Code Online (Sandbox Code Playgroud)

上述两行都可以使用,因为字符串的格式对于en-CAculture来说是可以接受的.由于您没有为DateTime.Parse调用提供任何文化,因此您当前的文化用于解析不支持日期格式的文本.在DateTime.Parse阅读更多相关信息.


另一种解析方法是使用 DateTime.TryParseExact

DateTime dt;
if (DateTime.TryParseExact("24/01/2013", 
                            "d/M/yyyy", 
                            CultureInfo.InvariantCulture, 
                            DateTimeStyles.None,
    out dt))
{
    //valid date
}
else
{
    //invalid date
}
Run Code Online (Sandbox Code Playgroud)

TryParse组的.NET Framework中的方法不会对无效值,抛出异常,相反,他们返回bool表明解析成功或失败的价值.

请注意,我用单dM分别日期和月份.单一d,M适用于单日/双位数日和月.因此格式d/M/yyyy有效值可以是:

  • "24/01/2013"
  • "24/1/2013"
  • "2013年4月12日"// 2013年12月4日
  • "2013年4月12日"

要进一步阅读,您应该看到:自定义日期和时间格式字符串


Joh*_*Woo 11

使用 DateTime.ParseExact

string strDate = "24/01/2013";
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", null)
Run Code Online (Sandbox Code Playgroud)

null将使用当前的文化,这有点危险.尝试提供特定的文化

DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

  • 您应该使用“dd/MM/yyyy”而不是“dd/MM/YYYY”。 (2认同)

Son*_*nül 6

您可以使用"dd/MM/yyyy"格式来使用它DateTime.ParseExact.

使用指定的格式和特定​​于区域性的格式信息将指定的日期和时间字符串表示形式转换为其DateTime等效形式.字符串表示的格式必须与指定的格式完全匹配.

DateTime date = DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

这是一个DEMO.

有关更多信息,请查看 Custom Date and Time Format Strings