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