Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > как сохранить в Calendar время '02:30 29.03.2009'? |
Автор: Forza 2.4.2009, 20:08 | ||||
Получаю дату/время из файла в виде строки, которая, например, может выглядеть так - "2009.03.29 02:30". Хочу преобразовать её в Date или Calendar, например:
Умная Джава знает, что времени 02:30 не может быть 29-го марта 2009-го года в России, и прибавляет к этому времени 1 час. Таким образом в timeStampCalendar я имею уже 3 часа 30 минут. Как сделать, чтобы время сохранилось в Calendar, как 02:30 безо всяких изменений? Пытался экспериментировать с TimeZone/Locale при объявлении Календаря или ДэйтФормата (см. примеры ниже - Китай выбран, т.к. у него нет перехода на летнее время) - не помогло. ![]()
Что ещё может помочь, кроме изменения настроек на уровне ОС? В идеале надо иметь такой "режим", при котором перевод на летнее/зимнее время будет отсутствовать в принципе. |
Автор: ivg 2.4.2009, 21:18 | ||
|
Автор: LSD 3.4.2009, 12:44 | ||||
Как вариант, вместо:
использовать
если заранее известно и фиксировано смещение от гринвича. |
Автор: Forza 3.4.2009, 16:07 | ||
Спасибо за ответы. Когда в первый раз сам смотрел, не заметил, что можно заменить TimeZone у DateFormat (наверное, это было так потому, что у Календаря и ТаймЗона, и Локаль явно присутствовали в конструкторе, а у ДэйтФормата через конструктор можно передать только Локаль). Кстати, мою проблему можно решить и более коротко, не создавая свою собственную TimeZone:
|
Автор: math64 4.4.2009, 23:50 |
Поскольку времени 2:30 нет, parse() должно бы выбросить исключение (если вызвано setLenient(true) или сделать тоже самое, что и при 1:90. Так что если вводится правильное время никаких ошибок нет. Но осенью во время перехода от летнего к зимнему времени 2:30 может быть как летним, так и зимним временем и существует потеря информации. |