我在一个旧的 C++ MFC 程序中发现了一个错误,该程序计算给定日期与固定基准日期的偏移量(以天为单位)。由于某种原因,我们看到结果偏离了一个,我将其追踪到原始程序员使用 CTimeSpan.GetDays() 方法的位置。根据文档:
请注意,夏令时可能会导致 GetDays 返回一个可能令人惊讶的结果。例如,当 DST 生效时,GetDays 将 4 月 1 日和 5 月 1 日之间的天数报告为 29,而不是 30,因为 4 月的一天缩短了一个小时,因此不算完整的一天。
我建议的解决方法是(obj.GetTotalHours()+1)/24
改用。我认为这将涵盖所有问题,因为这是每天大约在同一时间运行的批处理作业,但我想在实施它之前我会问这里的聪明人是否有更好的方法。
这只是一个附带问题,但我也很好奇如果程序可以随时运行,将如何处理。