Синхронизировать даты между Java и C ++ - PullRequest
1 голос
/ 24 мая 2009

У меня есть приложение, которое работает на устройстве, которое не подключено к Интернету. ОС Windows XP. Есть модуль C ++ и модуль Java, которые взаимодействуют через сокет. Часть Java должна получить файл из части C ++ в соответствии с ее датой и временем. Когда прибыл переключатель DST, они перестали работать. Кажется, что C ++ игнорирует DST, потому что Windows не загрузила ежегодное обновление DST, в то время как Java обрабатывает DST в соответствии с некоторой внутренней таблицей. Устройство, которое я программирую, должно работать непрерывно, независимо от сети и в разных странах. Мой вопрос: как я могу заставить и Java, и C ++ игнорировать внешние обновления и работать в соответствии с некоторой предопределенной таблицей DST.

Ответы [ 3 ]

1 голос
/ 24 мая 2009

Кодировать дату в виде строки, которая включает информацию о часовом поясе ( ISO 8601 является наиболее полным стандартом для этого). Используйте хорошую основу для разбора в / из формата на каждой стороне. Boost (C ++) и Joda (Java) предоставляют отличную поддержку для этого.

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

Если вам необходимо адаптировать часовой пояс для выполнения с ним централизованной работы, то стандартизируйте его по UTC и разрешите клиенту адаптировать дату / время к его локали для отображения или для локальных манипуляций. В противном случае просто сохраните / получите дату / время в местном часовом поясе, если все манипуляции и отображение выполняются в местном часовом поясе.

0 голосов
/ 24 мая 2009

Я бы посоветовал вам использовать GMT + 0 для записи всей даты и корректировать время только при ее отображении.

0 голосов
/ 24 мая 2009

Нужно ли использовать представление времени, чувствительное к летнему времени? Вы можете использовать Unix-время (которое, вероятно, я бы выбрал), TAI или любые другие системы времени с [некоторых эпох], и вам не придется беспокоиться о таких вещах, как летнее время или дополнительные секунды.

...