DateTime.Parse关闭了一个小时。为什么?

时间:2011-01-13 16:11:49

标签: c# .net parsing datetime tostring

我一直在理解为什么恢复的日期时间字符串的值与原始字符串不同。我正在将字符串写入通用日期时间(格式为“u”,因此它的末尾有'z'),但是当它恢复时,它会相差一小时。我正在使用“你”来阻止这种事情的发生。谁能告诉我为什么会有所不同?

我需要一个好的字符串表示法,因为我将在5个不同的时区使用代码。

该计划:

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfoByIetfLanguageTag("es-CR");

            DateTime min = DateTime.MinValue;

            Console.Write("Min value date: ");
            Console.WriteLine(min);

            Console.Write("String:         ");
            string str = min.ToString("u");
            Console.WriteLine(str);

            DateTime dt = DateTime.Parse(str);

            Console.Write("Restored Date:  ");
            Console.WriteLine(dt);

            Console.ReadLine();

        }
    }
}

输出结果为:

  

最小值日期:01/01/0001 12:00:00 a.m。

     

字符串:0001-01-01 00:00:00Z

     

恢复日期:01/01/0001 01:00:00 a.m。

编辑:尝试哥斯达黎加文化的选项。

2 个答案:

答案 0 :(得分:4)

解析通用DateTime字符串时,它使用的是您当地的时区吗?您可以使用方法ToUniversalTime()和ToLocalTime()来回转换。此外,如果您将时区偏移放置在“Z”之后,这将有助于您转换为正确的时区。

布赖恩

答案 1 :(得分:1)

有一个非常interesting thread about this on bytes.com

Il看起来像你日期结束时的'Z'在UTC和CET之间混乱。

  

在非常普遍的地区CET现在   (不是夏令时)恰好是我们的一个   之后是UTC / GMT / ZULU / Military。

我对这个主题不太自信,所以我让你读一下这个主题。

相关问题