从字符串中转换日期时间格式?

5

如何将字符串转换为DateTime格式?例如,如果我有一个字符串:

"24/10/2008"

如何将其转换为DateTime格式?

5个回答

12

使用DateTime.ParseExact

string str = "24/10/2008";
DateTime dt = DateTime.ParseExact(str, "dd/MM/yyyy", 
                                  Thread.CurrentThread.CurrentCulture);

(必须考虑您实际要在哪种文化环境下进行解析。)

编辑:其他答案将第三个参数指定为“null”-这相当于使用Thread.CurrentThread.CurrentCulture

有关其他格式,请参见MSDN中的“自定义日期和时间格式字符串”


4
如果您不知道格式,请使用:
DateTime d = DateTime.Parse(dateString);

这个函数尝试使用当前区域设置的格式规则(例如英语(美国)“en-US”,德语“de-DE”等)解析日期和时间的字符串表示形式。它会尝试忽略无法识别的数据,并使用当前日期填充年、月和日的缺失值(例如仅解析包含时间的字符串时)。如果您知道字符串使用的区域设置与当前区域设置不同,可以指定要使用的区域设置。
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
DateTime d = DateTime.Parse(dateString, culture);

由于字符串必须符合已识别的模式,因此您应始终使用try-catch块包围转换。或者,您也可以使用方法DateTime.TryParse(dateString, out dateTime)测试字符串的有效性,在成功时返回true并将结果存储在dateTime中;否则返回false。

如果您知道确切的格式,可以使用

DateTime d = DateTime.ParseExact(dateString, "dd/MM/yyyy", null);

(请参阅MSDN网站上的自定义日期和时间格式字符串获取其他格式字符串。)


3
我建议您查看DateTime.TryParse,如果您不确定日期字符串的格式。这样,您就可以避免在解析过程中出现非常昂贵的异常。
我也赞同Jon Skeet的建议,如果您确切地知道每次日期的格式,请使用DateTime.ParseExact

1
还有 .TryParseExact(),来兼顾两者之长。 - Joel Coehoorn

0

尝试类似这样的东西

DateTime date = System.DateTime.ParseExact(str, "dd/MM/yyyy", null);

对于时间,这可能有效。

DateTime date = System.DateTime.ParseExact(str, "HH:mm:ss", null);

0
string str = "24/10/2008";
DateTime dt = Convert.ToDateTime(str);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接