【发布时间】:2011-06-03 07:08:23
【问题描述】:
所以,我有这个字符串“日期:2011 年 1 月 3 日星期一 19:29:44 GMT+0200”,当我使用 DateTime.Parse(date).ToString(); i' m 得到“字符串未被识别为有效的日期时间。”
如果我删除“+0200”部分,它可以正常工作,但它当然不会显示正确的当地时间。 那有什么问题?
【问题讨论】:
标签: c# .net datetime time timezone
所以,我有这个字符串“日期:2011 年 1 月 3 日星期一 19:29:44 GMT+0200”,当我使用 DateTime.Parse(date).ToString(); i' m 得到“字符串未被识别为有效的日期时间。”
如果我删除“+0200”部分,它可以正常工作,但它当然不会显示正确的当地时间。 那有什么问题?
【问题讨论】:
标签: c# .net datetime time timezone
从documentation看来,DateTime.Parse()只懂:
GMT 指示符,单独使用,例如Mon, Jan 03 2011 17:29:44 GMT,或
在没有GMT 指示符的情况下指定的时区偏移量,例如Mon, Jan 03 2011 19:29:44+02:00.
您可能希望将日期字符串转换为第二种形式。
【讨论】:
这只是意味着时区偏移不是默认格式字符串的预期部分。
如果您知道您期望的格式,我建议您致电DateTime.ParseExact(或DateTime.TryParseExact),指定要尝试的格式。查看custom date/time format strings 的文档了解更多详情。
【讨论】:
你有两个错误。
首先 - 不要使用 Parse 方法。更正确的是 TryParse。 其次 - 当您使用 Parse 或 TryParse 时不带参数时,您将遇到全球化问题。
例如,看这段代码:
DateTime.Parse("01.02.2011");在美国是 1 月 2 日。在德国是 2 月 1 日。
所以,我建议您使用this article 中的格式。
【讨论】: