【发布时间】:2011-09-24 11:43:15
【问题描述】:
我的这些日期时间在我看来是一个奇怪的标准..
2004/05/17 21:27:16.162 GMT-7
2006/08/01 01:00:00 GMT-7
2010/11/05 13:00:38.844 美国/太平洋
关于如何在 C# 中解析它们的任何想法?或者有没有人见过他们?
【问题讨论】:
标签: datetime localization
我的这些日期时间在我看来是一个奇怪的标准..
2004/05/17 21:27:16.162 GMT-7
2006/08/01 01:00:00 GMT-7
2010/11/05 13:00:38.844 美国/太平洋
关于如何在 C# 中解析它们的任何想法?或者有没有人见过他们?
【问题讨论】:
标签: datetime localization
2010/11/05 13:00:38.844 US/Pacific 是您无法在纯 .Net 中解析的东西,至少不能以本地化形式解析。对于其他人,这实际上取决于您是否了解格式。如果你这样做了,你可以使用 DateTime 的ParseExact() 方法:
var dateString = "2004/05/17 21:27:16.162 GMT-7";
var anotherDateString = "2006/08/01 01:00:00 GMT-7";
DateTime firstResult;
var success = DateTime.TryParseExact(dateString, "yyyy/MM/dd HH:mm:ss.fff 'GMT'z", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out firstResult);
if (success)
MessageBox.Show(firstResult.ToString());
DateTime anotherResult;
success = DateTime.TryParseExact(anotherDateString, "yyyy/MM/dd HH:mm:ss 'GMT'z", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out anotherResult);
if (success)
MessageBox.Show(anotherResult.ToString());
请记住,我使用 InvariantCulture 是因为我知道它与 en-US 完全相同。要获得正确的结果,您需要使用有效的 CultureInfo。
最后但同样重要的是:为什么还要解析这些 invalid 格式?我建议解决问题的根源并使用本地默认格式(取决于当前用户所在位置的文化和当地时间),而不是创建自己的格式。特殊格式会使最终用户更难理解时间。
【讨论】:
也许你可以看看这个主题,它告诉你如何格式化日期时间
但我认为您正在寻找的是 DateTimeOffset Convertsion between DateTime and DateTimeOffset
【讨论】: