所以,我有这个字符串“Date:Mon Jan 03 2011 19:29:44 GMT + 0200”,当我使用 DateTime.Parse(date).ToString(); i'得到“字符串未被识别为有效的DateTime。”
如果我删除'+0200'部分它可以正常工作,但当然它没有显示正确的当地时间。 这有什么问题?
答案 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中的格式。