2009-05-24 75 views
1

我有一個應用程序在未連接到互聯網的設備上運行。操作系統是Windows XP。 有一個通過套接字進行交互的C++模塊和Java模塊。 Java部分需要根據日期和時間從C++部分獲取文件。當DST開關到達時,他們停止工作。 似乎C++忽略了DST,因爲Windows並未下載每年的DST更新,而Java則根據它所具有的某個內部表來處理DST。 我正在編程的設備必須能夠連續運行,從網絡和不同國家斷開連接。 我的問題是:如何讓Java和C++都忽略外部更新並根據某個預定義的DST表進行操作。在Java和C++之間同步日期

+0

只是爲了澄清自己:我想要手動控制應用程序時間,並忽略來自外部的任何干擾。 – arsenalfan 2009-05-24 06:16:48

回答

0

您是否必須使用對DST敏感的時間表示?你可以使用Unix時間(這可能是我將要使用的時間),TAI或任何其他時間以來的[某些時代]系統,而不必擔心夏令時或閏秒等事情。

+0

使用自1970年以來的秒數表示法不適用於我。 C++和Java模塊需要知道一天結束的時間(當地時區的日期)。 – arsenalfan 2009-05-24 07:20:40

0

我建議你使用GMT + 0來記錄所有的日期,只調整顯示它的時間。

1

將日期編碼爲包含時區信息的字符串(ISO 8601是此標準的最完整標準)。使用一個很好的框架來解析每個方面的格式。 Boost(C++)和Joda(Java)爲此提供了出色的支持。

因爲它不代表時區,所以時間不適合你。

如果您需要調整時區來完成集中工作,那麼在UTC上進行標準化,並允許客戶端將日期/時間調整爲其語言環境以用於顯示或本地操作。否則,如果所有操作和顯示均在本地時區完成,則只需在本地時區中存儲/檢索日期/時間。

+0

是的。我想將時區設置爲UTC就足夠了。 雙方將同步。時鐘可以手動設置以匹配當前時間。 – arsenalfan 2009-05-25 13:58:16