小编典典

将dd / mm / yyyy格式的字符串转换为Datetime [重复]

c#

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

DateTime dt=DateTime.Parse("24/01/2013");

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


阅读 308

收藏
2020-05-19

共1个答案

小编典典

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

DateTime dt=DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);

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


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

DateTime dt = DateTime.Parse("24/01/2013", new CultureInfo("en-CA"));

要么

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

上面的两行都可以使用,因为字符串的格式对于en- CA区域性是可接受的。由于您没有为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
}

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

请注意 ,我分别使用single
dMday和month。单dM适用于单/双数字日和月。因此,对于格式,d/M/yyyy有效值可以是:

  • “ 2013年1月24日”
  • “ 2013年1月24日”
  • “ 4/12/2013”​​ // 2013年12月4日
  • “ 2013年12月12日”

有关更多信息,请参见:自定义日期和时间格式字符串

2020-05-19