Как насчет
DateTime lclTime = DateTime.Now;
DateTime ept = lclTime.ToUniversalTime().AddHours(
IsEasternDaylightSavingTime(
lclTime.ToUniversalTime())? -5: -4)
или если Вы уже имеете локальный UTC, всего
DateTime lclUtc = DateTime.UtcNow;
DateTime ept = lclUtc.AddHours(
IsEasternDaylightSavingTime(lclUtc)? -5: -4)
Использование статический словарь твердых кодированных значений для Spring вперед и отступаете даты в течение Восточного времени в течение следующих 50 лет.. Это составляет приблизительно только 300 байтов..., и затем индексируйте в это, чтобы определить, является ли это Летним временем на восточном побережье... Как указано, Вы надеваете; t заботятся, является ли это DST в локальной зоне или нет...
private static bool IsEasternDaylightSavingTime(DateTime utcDateTime)
{
// hard coded method to determine
// whether utc datetime is Eastern Standard time
// or Eastern Daylight Time
}
Один из подходов, который мы использовали в прошлом, - это создание сценария всего DDL для базы данных вместе со всеми необходимыми данными тестирования / настройки. Сохраните это в SVN, а затем, когда произойдет изменение, любой разработчик может извлечь изменения, удалить базу данных и восстановить ее из файлов сценария.
По крайней мере, у вас должны быть сценарии всех объектов в базе данных (таблицы, хранимые процедуры и т. д.) под контролем источника.
Я не думаю, что изменение схемы рассылки - реальный вариант для профессиональной команды разработчиков.
В одной из моих предыдущих команд была система, которая была лучшей из тех, с которыми я встречался для решения этой ситуации.
Ночная сборка приложения включала сборку базы данных ( SQL Server). База данных построена на сервере Test DB. Затем у каждого разработчика был пакет DTS (это было некоторое время назад, и я уверен, что они обновились до пакетов SSIS), чтобы загрузить эту ночную сборку БД в свою локальную среду БД.
Это сохраняло главную копию в одном месте и возложить на разработчиков обязанность поддерживать актуальность своих локальных баз данных разработчиков.
У нас есть не-SQL описание схемы базы данных. Когда приложение запускается, оно сравнивает желаемую схему базы данных с реальной схемой базы данных и выполняет все операторы ADD TABLE, ADD COLUMN, ADD INDEX и т. Д., Которые ему необходимы, чтобы база данных выглядела правильно.
Это не ' t обрабатывать каждый случай; иногда вам нужно удалить базу данных и воссоздать ее заново, если вы изменили что-то, что преобразователь схемы не может обработать, но в большинстве случаев нам не нужно об этом беспокоиться.
На моей работе мы имеем дело с довольно большими базами данных, создание которых требует много времени, поэтому для нас начинать с нуля с новой БД не идеально. Как и у Харпера, у нас есть DDL в SVN. Кроме того, мы храним номер версии в таблице базы данных. Каждая регистрация, которая изменяет БД, должна сопровождаться сценарием, который:
Далее, мы пронумеровать сценарии и версии базы данных таким образом, чтобы сценарий, который мы написали, знал, как выполнить обновление дальше по ветке или от старой ветки к более новой без какого-либо ввода со стороны разработчика (кроме имени базы данных и каталога в сценарии обновления ).
Таким образом, если у меня есть копия БД клиента размером 4 ГБ,
Я бы определенно сохранил схему базы данных в управлении исходным кодом.
В моей текущей работе каждый раз, когда происходит изменение схемы, мы пишем SQL для этого изменения (alter table xyz add столбец ...) и поместите его в SVN. Затем разработчики могут обновить тестовые базы данных, запустив этот скрипт. Это довольно неуклюже, но работает.
На предыдущей работе я написал код, который при запуске приложения автоматически сравнивал фактическую схему базы данных с ожидаемой, и, если она не была актуальной, выполняла обновления. В основном это было сделано для целей развертывания: когда мы отправляли новые копии программного обеспечения, они автоматически обновляли базу данных пользователя. Но это также было удобно для разработчиков.
Я думаю, что для этого должен быть какой-то общий инструмент SQL. Может быть, и есть, но никогда не видел.