rust SystemTime::now是否受夏令时影响?

tf7tbtn2  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(125)

在时间T,我调用一个SystemTime::now().duration_since(UNIX_EPOCH);
在时间T +10,当夏令时开始时,我调用相同的调用。
这两个执行严修之间是否会有任何奇怪的行为?

ryevplcw

ryevplcw1#

SystemTime本身完全独立于时区。时区,作为一个概念,谈论如何以一种有用的方式向人类显示时间-SystemTime根本不与人类交谈,它只是获取当前时间。因此,由于UNIX_EPOCH是一个完全不受时区影响的时间点(它被定义为1970-01-01 00:00:00 UTC,这是一个与时区无关的固定时间点),因此不可能观察到时区因素(如夏令时)对SystemTime的影响。
chrono应该在以下情况下使用:希望以人类可读的格式向用户显示时间,或者希望从用户输入中解析时间,或者执行更复杂的编程,处理人类对时间的解释,而不是时间和持续时间本身的原始概念。例如,仅仅计算Unix时间戳就不应该用chrono来完成(chrono也不会有帮助)。

hec6srdp

hec6srdp2#

以下是documentation
系统时钟的度量,用于与外部实体(如文件系统或其他进程)通信。
Instant类型不同,该时间测量不是单调的。这意味着您可以将一个文件保存到文件系统,然后将另一个文件保存到文件系统,并且第二个文件的SystemTime度量值早于第一个文件。换句话说,在另一个操作之后真实的发生的操作可能具有更早的SystemTime
事实上,这可能是由于几个原因而不仅仅是夏令时,例如简单的时钟同步。如果这些特性不适合您的用例,我建议使用chrono,就像其他人在评论中建议的那样。

相关问题