169 похожих чатов

Доброго здоровья! Использую Date() при сохранении текущей даты+времени в sqlite,


но я так понял, что она выдает число (Long) без учета часового пояса на телефоне
Да, при считывании и преобразовании в строку через:
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT)
текущий часовой пояс учитывается и время корректируется, но выставляя разные пояса, будем получать разное время, а хотелось бы, чтобы хранилась и отображалась дата и время, которые были на телефоне в момент добавления и уже не зависели от смены поясов. Если кто решал похожую задачу, поделитесь, пожалуйста, соображениями. Как сохранять, как отображать дату?

10 ответов

13 просмотров

Ну так и записать сразу дату. Не в лонге, а прямо стрингой и всё

Pavel-Vasilev Автор вопроса

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

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

Pavel-Vasilev Автор вопроса

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

Мне кажется тут любой подход будет костыльно выглядеть.

Pavel-Vasilev Автор вопроса

я недавно начал осваивать мобильную разработку, и уже понял что с датами в яве беда, по крайней мере до восьмой версии

Хрупко, если я поменяю часовой пояс на тф, все сломается. В стринге хранить надо с таймзоной

Pavel-Vasilev Автор вопроса

Не сломается, если я буду отображать строки как то так: dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT) dateFormat.timeZone= TimeZone.getTimeZone("UTS")

Не сломается. Он имеет в виду записывать с учётом нынешней зоны, а читать потом как-будто находишься в нуле. Но это костыль, конечно, имхо

Согласен, тот ещё костыль

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта