我不确定这个问题是否属于StackOverflow,但现在是。
我需要使用C#为一些数据生成时间戳,这些数据要从一方转移到另一方,我需要知道所有操作系统(Windows,Linux和Unix)中系统时钟的最差情况精度是多少)?我需要的是确定精度,以便所有操作系统都能够验证此时间戳。
例如,Windows Vista操作系统的时钟分辨率大约为10-15毫秒。
答案 0 :(得分:1)
您是否希望为数据生成类似unix timestamp的内容?或者找到一个不会与现有文件冲突的时间戳?如果它是后者你总是可以使用刻度。
任何“长”时间戳的问题在于它将相对于生成它的机器但不保证在其他系统上不发生冲突,因为时钟可以设置不同(不是浮点数,但实际上设置不同)
如果数据是安全/敏感的,并且您正在寻找基于时间的同步密钥机制(ALA Kerberos),我不会建议您自己滚动,因为有很多障碍需要克服,特别是在同步时 - 系统并保持同步。
答案 1 :(得分:0)
有趣。主要操作系统具有最差 - 厘秒级分辨率(0.01秒),但通常嵌入更精确。
Linux在其时间戳中提供高达微秒的分辨率(请参阅man utime
),具体取决于计算机的时钟硬件。 Windows NT / Win2K / XP /等。提供文件时间戳的毫秒精度(仅使用NTFS),尽管它以0.000 000 1
秒单位(每秒1000万)计算所有系统时间戳。
如果系统之间需要准确的和精确时间分辨率,GPS接收器很容易达到side effect of how they work的100纳秒精度,而许多便宜的型号也可以达到10 ns。 Special GPS models使派生时间可供外部使用。