使用DateTime.Parse方法时获取异常

时间:2011-01-04 09:44:57

标签: c# .net datetime time timezone

所以,我有这个字符串“Date:Mon Jan 03 2011 19:29:44 GMT + 0200”,当我使用 DateTime.Parse(date).ToString(); i'得到“字符串未被识别为有效的DateTime。”

如果我删除'+0200'部分它可以正常工作,但当然它没有显示正确的当地时间。 这有什么问题?

3 个答案:

答案 0 :(得分:7)

documentation开始,DateTime.Parse()似乎只能理解:

  • GMT指示符,单独使用,例如Mon, Jan 03 2011 17:29:44 GMT

  • 在没有GMT指示符的情况下指定的时区偏移,例如Mon, Jan 03 2011 19:29:44+02:00

您可能希望将日期字符串转换为第二种形式。

答案 1 :(得分:4)

这只是意味着时区偏移量不是默认格式字符串的预期部分。

如果你知道你期望的格式,我建议你拨打DateTime.ParseExact(或DateTime.TryParseExact),指定要尝试的格式。有关详细信息,请查看custom date/time format strings的文档。

答案 2 :(得分:2)

你有两个错误。

首先 - 不要使用Parse方法。更正确的是TryParse。 第二 - 当你使用没有参数的Parse或TryParse时,你会遇到全球化问题。

例如,请参阅此代码:

DateTime.Parse(“01.02.2011”);在美国,它是1月2日。在德国,它是2月1日。

所以,我建议您使用this article中的格式。