C# 将dd/mm/yyyy格式的字符串转换为日期时间
我不熟悉DotNet和C。我想将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,则更安全,因为这将处理日/月的一位数和两位数。但这实际上取决于您是否期望一位数/两位数的值 对于某些区域性,日期格式日/月/年可能是可接受的日期格
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);