Как обращаться с DateTime для приложения, предназначенного для глобального запуска. UTC / GTM / Летнее время - PullRequest
4 голосов
/ 28 ноября 2011

Я работаю над приложением, целевая аудитория которого расположена по всему миру. Моей платформой разработки является ASP.Net/Sql Server, и в настоящее время оба размещены на одном и том же выделенном сервере.

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

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

Наша база данных в настоящее время структурирована со следующими типами столбцов для даты и времени.

DateTime (мм / дд / гггг чч: мм: сс), SmallDateTime (содержит только часть даты мм / дд / гггг 12:00:00), Varchar (содержит hhMMss только в 24-часовом формате)

В настоящее время мы сохраняем GetDate () Sql Server , DateTime.Now из C # , т. Е. ASP.NET, javascript datetime и любую другую дату напрямую. В настоящее время нет конвертации в UTC или ничего подобного. В настоящий момент мы не храним ни TimeZone, ни какие-либо смещения.

Как мне решать проблемы, связанные с DateTime, когда

  • Вызов хранимой процедуры для сохранения DateTime из пользовательского интерфейса в базу данных

  • Отображение данных из хранимой процедуры в пользовательский интерфейс

  • Отображение данных с сервера ASP.NET на клиентский браузер

  • Сохранение данных из браузера клиента на сервере ASP.NET

Пожалуйста, предложите несколько примеров кода для каждого случая вместе с переходом на летнее время

1 Ответ

0 голосов
/ 13 декабря 2011

Я работаю в компании, имеющей бизнес по всему миру, и мы храним все даты в UTC.

По сути, в вашем sql вы должны использовать функцию GETUTCDATE () вместо GETDATE () и в C # вы используете DateTime.UtcNow вместо DateTime.Now.

Поля базы данных могут быть стандартными datetime

В вашем пользовательском интерфейсе вы можете отображать дату в формате гггг / мм / дд, если вы не знаете или не можете определить локальные настройки клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...