2011-06-03 168 views
2

如何将1900-01-01 00:00:00Z解析为DateTime对象?解析日期时间

 string temp = "1900-01-01 00:00:00Z"; 
     CultureInfo provider = CultureInfo.InvariantCulture; 
     var date = DateTime.ParseExact(temp, "yyyy-MM-dd hh:mm:ssZ", provider); 

这将返回我:

1899年12月31日晚上7:00:00点

+3

准确的时间是5个小时。您可能需要考虑时区。 – 2011-06-03 18:59:02

回答

3

您如何显示值?我怀疑这只是将当地时区应用到日期。

例如,尝试打印出:

  • date.Year
  • date.Kind
  • date.Hour

我的猜测是,你会看到date实际上一个UTC DateTime与正确的价值。

这是不幸的.NET为您隐式执行的时区转换,但随后在.NET留下点什么的日期和时间类型无论如何都要所需:(

另一种方法是使用DateTimeOffset这应该它弄得有一点更清晰。

+2

哈!我击败了你16秒! – Hogan 2011-06-03 19:00:44

+0

你需要一帧截图 – tofutim 2011-06-03 19:16:00

4

我猜你是在美国东部时间。这是从时间减去5小时。也许这是因为你如何打印时间?尝试在GMT下打印。或者你可以用你当地的时区来解析它。

0

您可以使用此代码

 DateTime a; 
     var dt = DateTime.TryParse("30/05/1970",out a); 
+0

这将如何帮助? – 2014-05-03 03:07:32

0

默认情况下,给定的时间调整到您的计算机的本地时区。该date.Kind应该反映出这一点。相反,如果哟您希望将时间调整为世界时(UTC),请使用DateTimeStyles.AdjustToUniversal标志作为ParseExact的第四个参数。