C# 将dd/mm/yyyy格式的字符串转换为日期时间

C# 将dd/mm/yyyy格式的字符串转换为日期时间,c#,string,datetime,C#,String,Datetime,我不熟悉DotNet和C。我想将mm/dd/yyyy格式的字符串转换为DateTime对象。我尝试了下面的解析函数,但它抛出了一个运行时错误 DateTime dt=DateTime.Parse("24/01/2013"); 关于如何将其转换为datetime,您有什么想法吗?您需要使用格式“dd/MM/yyyy” 如果对格式使用d/M/yyyy,则更安全,因为这将处理日/月的一位数和两位数。但这实际上取决于您是否期望一位数/两位数的值 对于某些区域性,日期格式日/月/年可能是可接受的日期格

我不熟悉DotNet和C。我想将
mm/dd/yyyy
格式的字符串转换为
DateTime
对象。我尝试了下面的解析函数,但它抛出了一个运行时错误

DateTime dt=DateTime.Parse("24/01/2013");
关于如何将其转换为datetime,您有什么想法吗?

您需要使用格式
“dd/MM/yyyy”

如果对格式使用
d/M/yyyy
,则更安全,因为这将处理日/月的一位数和两位数。但这实际上取决于您是否期望一位数/两位数的值


对于某些区域性,日期格式<代码>日/月/年可能是可接受的日期格式。例如,对于加拿大文化
en-CA
DateTime.Parse
的工作原理如下:

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

以上两行都可以工作,因为字符串的格式对于
en-CA
区域性是可以接受的。由于您没有向
DateTime.Parse调用提供任何区域性,因此当前区域性用于不支持日期格式的解析。阅读更多关于它的信息


另一种解析方法是使用

Net framework中的
TryParse
方法组不会对无效值引发异常,而是返回一个
bool
值,指示解析成功或失败

请注意我已分别在天和月使用了单个
d
M
。单个
d
M
适用于一位数/两位数的日期和月份。因此,对于
d/M/yyyy
格式,有效值可以是:

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

如需进一步阅读,请参阅:

使用
DateTime.ParseExact

string strDate = "24/01/2013";
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", null)
null
将使用当前区域性,这有点危险。尝试提供一种特定的文化

DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", CultureInfo.InvariantCulture)
您可以使用
“dd/MM/yyyy”
格式在中使用它

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

这是一本书


有关更多信息,请查看

非常感谢。我已经尝试过DateTime.ParseExact()了,但我想关键在于第三个参数是null。我使用的是CultureInfo.InvariantCulture,这会给我一个编译错误。@user1872530,不客气,它应该对您有效,但我猜您缺少对System.Globalization的使用语句,所以请尝试使用
System.Globalization.CultureInfo.InvariantCulture
,谢谢。我使用的是“dd/MM/yyyy”,将“3/12/2016”更改为“d/M/yyyy”时解析失败,因为小于10的日和月值不再需要以零开头。如果字符串包含时间,则可以使用“dd/M/yyyy H:MM:ss”您应该使用“dd/MM/yyyy”而不是“dd/MM/yyyyy”。
DateTime dt;
if (DateTime.TryParseExact("24/01/2013", 
                            "d/M/yyyy", 
                            CultureInfo.InvariantCulture, 
                            DateTimeStyles.None,
    out dt))
{
    //valid date
}
else
{
    //invalid date
}
string strDate = "24/01/2013";
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", null)
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", CultureInfo.InvariantCulture)
DateTime date = DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);