DateTime.Parse выключен на один час. Зачем? - PullRequest
3 голосов
/ 13 января 2011

У меня возникли проблемы с пониманием того, почему значение восстановленной строки даты и времени отличается от ее оригинала.Я записываю строку в универсальную дату-время (формат «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

Строка: 0001-01-01 00: 00: 00Z

Дата восстановления: 01/01/0001 01:00:00 утра

Изменить: возможность попробовать культуру Коста-Рики.

Ответы [ 2 ]

4 голосов
/ 13 января 2011

Когда вы анализируете универсальную строку DateTime, она использует ваш местный часовой пояс?Вы можете использовать методы ToUniversalTime () и ToLocalTime () для преобразования назад и вперед.Кроме того, если вы поместите смещение часового пояса после «Z», это поможет вам перейти в правильный часовой пояс.

1 голос
/ 13 января 2011

На сайте bytes.com есть очень интересная тема об этом .

Il выглядит так, как будто в конце вашей даты буква "Z" перебирает UTC и CET.

В очень обширной зоне CET сейчас (а не по летнему времени) ровно одна наша позже, чем в UTC / GMT / ZULU / Military.

Я не очень уверенс этой темой, поэтому я позволю вам прочитать ветку.

...