夏令时
在 WinNT/2000/XP(和一些其他平台)下,文件时间戳存储在“文件时间”中,并通过基于系统时区的公式转换为本地“系统时间”,以及夏令时 (DST) 是否在生效。 第一个问题是,当 DST 开启或关闭时,公式会发生变化 - 但时间更改前后的日期使用相同的公式! 因此,如果上周您在服务器上的文件上记下时间戳,而今天查看它,您会发现时间戳似乎向前跳了一个小时。 显然,MS 不想要更复杂的公式带来额外负担,该公式根据时间戳的日期有条件地调整 DST。
如果您网络分布广泛,或者您的 PC 在不同时区之间移动,则此公式的时区部分很好,但它不能更好地处理夏令时,这太糟糕了。 (实际上,如果完全没有夏令时,我们可能都会过得更好!)
这本身可能就很烦人,但是第二个问题来了: Win95/98 下的 FAT 文件系统的工作方式相反。 时间戳按原样存储,不受系统时区或 DST 的影响。 (如果程序要求提供文件的“文件时间”,Windows 会通过反转上述公式来伪造答案。) 因此,当 DST 更改时,报告的时间戳不会“跳跃”。
如果您拥有所有基于 FAT 的文件系统或所有 NTFS 文件系统,您可能不会注意到这些。 但是,当一台 Win95/98 PC 连接到 WinNT/2000/XP 服务器并且您在它们之间移动/比较文件时,这真的很痛苦。
BC 版本 3 或者 4
在文件夹比较会话中,选择会话 |会话设置并选择比较选项卡。 在快速测试组中,启用忽略夏令时差异 选项。 这将让 Beyond Compare 忽略 DST 差异。
或者,如果您想“修复”服务器日期,可以试试这个方法:
- 如上所述启用忽略夏令时差异选项。
- 选择查看 |显示相同。
- 选择这些文件并执行比较内容(二进制) 操作以确保它们实际上相同。 (任何不同点都将从显示中删除。)
- 再次选择文件并对它们执行触摸操作以将时间戳复制到服务器。
BC 版本 2
选择会话 |比较控制。 在比较标准组中,启用忽略夏令时差异 选项。 这将让 Beyond Compare 忽略 DST 差异。
或者,如果您想“修复”服务器日期,可以试试这个方法:
- 如上所述启用忽略夏令时差异选项。
- 选择查看 |显示过滤器 |仅匹配。
- 选择这些文件并执行比较内容(二进制) 操作以确保它们实际上相同。 (任何不同的部分都将从显示中删除。)
- 再次选择文件并对它们执行触摸操作以将时间戳复制到服务器。
BC 版本 1.9
从查看菜单中,选择文件比较规则。 在文件比较规则对话框中,启用忽略 1 小时差异选项。
或者,如果您想“修复”服务器日期,可以试试这个方法:
- 打开一小时时区调整(在服务器端),以便 DST 之前的时间戳现在在双方匹配。
- 启用“=”显示过滤器,以便仅列出这些匹配的文件。
- 选择这些文件并进行快速比较以确保它们实际上相同。 (任何不同的部分都将从显示中删除。)
- 再次选择文件,然后单击服务器端标题上的“-1:00”按钮。
- 从弹出列表中选择“修改”,Beyond Compare 会将服务器上的时间戳更改一小时。