我有一个在未连接到互联网的设备上运行的应用程序。操作系统是Windows XP。 有一个C ++模块和Java模块通过套接字进行交互。 Java部分需要根据其日期和时间从C ++部分获取文件。当DST开关到达时,它们停止工作。 似乎C ++忽略了DST,因为Windows没有下载年度DST更新,而Java根据它拥有的某个内部表处理DST。 我正在编程的设备必须能够连续运行,与网络断开连接并且在不同的国家/地区。 我的问题是:如何让Java和C ++忽略外部更新并根据一些预定义的DST表进行操作。
答案 0 :(得分:1)
将日期编码为包含时区信息的字符串(ISO 8601是最完整的标准)。使用一个好的框架来解析每边的格式。 Boost(C ++)和Joda(Java)为此提供了出色的支持。
大纪元时间对你不起作用,因为它不代表时区。
如果您需要调整时区以便使用它进行集中式工作,那么请对UTC进行标准化,并允许客户端将日期/时间调整到其区域设置以进行显示或进行本地操作。否则,如果所有操作和显示都在本地时区完成,则只需在本地时区存储/检索日期/时间。
答案 1 :(得分:0)
您是否必须使用对DST敏感的时间表示?您可以使用Unix时间(可能是我要使用的那个),TAI或任何其他时间 - [某些时代]系统,而不必担心夏令时或闰秒等事情。
答案 2 :(得分:0)
我建议您使用GMT + 0记录所有日期,并仅在显示时调整时间。