<分区>
我是 DotNet 和 C# 的新手。我想将 mm/dd/yyyy
格式的字符串转换为 DateTime
对象。我尝试了如下所示的解析函数,但它引发了运行时错误。
DateTime dt=DateTime.Parse("24/01/2013");
关于如何将其转换为日期时间有什么想法吗?
<分区>
我是 DotNet 和 C# 的新手。我想将 mm/dd/yyyy
格式的字符串转换为 DateTime
对象。我尝试了如下所示的解析函数,但它引发了运行时错误。
DateTime dt=DateTime.Parse("24/01/2013");
关于如何将其转换为日期时间有什么想法吗?
最佳答案
您需要使用 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
}
.Net 框架中的TryParse
方法组不会对无效值抛出异常,而是返回一个bool
值来指示解析成功或失败。
请注意,我分别使用单个 d
和 M
表示日和月。单个 d
和 M
适用于个位数/双位数的日期和月份。所以对于格式 d/M/yyyy
有效值可以是:
要进一步阅读,您应该看到:Custom Date and Time Format Strings
关于c# - 将 dd/mm/yyyy 格式的字符串转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15738608/