Результаты форматирования даты C # в предыдущий день - PullRequest
0 голосов
/ 25 октября 2018

Вот код C #:

employee.BirthDate.ToString("yyyy-MM-dd");

При выполнении модульного теста на моем компьютере с BirthDate = "1/1/1981", который поступает из базы данных SQL Server, приведенный выше код приводит к "1981-01-01" .Но при запуске одного и того же кода на сервере QA это приводит к «1980-12-31».

Я попытался сделать следующее:

employee.BirthDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
employee.Birthdate.ToString("yyyy-MM-dd", new CultureInfo("en-US"));

Но обе эти строки кодарезультат на том же «1980-12-31» на сервере QA.

Что может быть причиной этого и каково решение?

ПРИМЕЧАНИЕ. Часы на моем компьютере и QAсервер синхронизирован.Кроме того, я проверил глобализацию .NET в IIS на сервере QA, на котором выполняется код, и задана культура «Инвариант».

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Следующий код добился цели:

employee.BirthDate.ToUniversalTime().ToString("yyyy-MM-dd");
0 голосов
/ 25 октября 2018

Я бы проверил, чтобы убедиться, что это не проблема часового пояса / перехода на летнее время.

Возможно, будет возвращаться что-то без правильного набора часового пояса, что приведет к вычитанию нескольких часов и переходу на предыдущий день.

...