Приведение даты-времени к OracleTimeStampTZ - PullRequest
1 голос
/ 25 февраля 2009

Незадолго до сохранения DateTime в базе данных я применяю DateTime в OracleTimeStampTZ. Это преобразует DateTime в OracleTimeStampTZ в текущем часовом поясе, что круто, это то, что я хочу. За исключением часового пояса, который указан как время отключения (+13, поскольку я в Новой Зеландии).

Теперь я немного боюсь, что это укусит меня в задницу в отношении летнего времени. Я бы предпочел, чтобы OracleTimeStampTZ.TimeZone был представлен как именованный часовой пояс (и, следовательно, именованный часовой пояс в базе данных).

Для согласованности я хочу использовать часовой пояс, определенный в .NET (IE использует TimeZoneInfo.Local).

Проблема в том, что TimeZoneInfo, похоже, не содержит названия часового пояса, которые совпадают с именами часового пояса оракула. Кроме того, свойство OracleTimeStampTZ.TimeZone доступно только для чтения.

Кто-нибудь знает хороший способ достижения этого?

Заранее спасибо

== РЕДАКТИРОВАТЬ, объясняя мои опасения по поводу DST ==

Хорошо, меня беспокоит следующее: Скажем, сейчас я сохраняю дату в базе данных для события, которое должно произойти через полтора года (в любом случае, на другой стороне летнего времени).

Скажите, что дата / время, которое я сохраняю, составляет 16:00 +13. Когда мы переходим на другую сторону летнего времени, смещение в моей стране может быть +12, что означает, что в моем местном часовом поясе ранее сохраненная дата считается 15:00, поскольку мое смещение изменилось, а сохраненное не изменилось.

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

Правильно ли то, что я описал?

1 Ответ

0 голосов
/ 25 февраля 2009

Я думаю, ты, наверное, в порядке, как есть. Можете ли вы набросать вариант использования для проблемы, о которой вы беспокоитесь? IIRC, Oracle учитывает переход на летнее время, и (поскольку дата сохраняется), я не уверен, как вы можете потерять информацию - вы узнаете, действует ли переход на летнее время, верно?

- MarkusQ

Итак, первое, что я попробую, это сохранить такую ​​дату и посмотреть, как она смещается. Другими словами, числовое смещение, используемое для часового пояса, может (правильно) быть функцией даты.

Полагаю, другой альтернативой, если это не сработает, будет сохранение имени часового пояса в столбце перечисления и восстановление времени по мере необходимости. Не красиво, но ...

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