在 UTC 定时服务器上调用 utc.Now

本文关键字:调用 utc Now 服务器 UTC 定时 | 更新日期: 2024-07-27 02:54:19

请有人把一些知识放在我身上。我位于 EST 区域,并且我有一个使用 UTC 时间的 Azure 站点。假设它在服务器上的时间是 5:08。如果我在该服务器上调用 Utc.Now 会发生什么情况?它会给我 5:08 还是像 10:08 这样的时间。感谢您的任何帮助。

在 UTC 定时服务器上调用 utc.Now

UTC 时间意味着一个恒定的参考。调用DateTime.UtcNow 使用本地时区和夏令时信息将 DateTime.Now 简单转换为 UTC 时间。

在内部,日期存储为 64 位整数。该数字表示自 UTC/GMT 中 1/1/0001 以来的纳秒数(它们的意思相同(。属性返回此值。如果你把它除以10,000,你可以在几毫秒内看到它,这更容易让你的头脑清醒一些。

代码

Console.WriteLine(new DateTime(1, 1, 1).Ticks);

始终在输出窗口中生成 0。代码

Console.WriteLine(new DateTime(1, 1, 1).ToUniversalTime().Ticks);

,在 EST 中,将 180000000000 添加到内部存储的日期值,因为这是 5 小时内的纳秒数。因此,创建一个新日期,其中需要更改 -180000000000 (-05:00( 才能将其放回本地时间。从 1/1/0001 开始看它总是帮助我想象我正在尝试做的事情。

在回答您的问题时,当您在配置为 GMT 时区的服务器上呼叫DateTime.UtcNow时,不会与本地和 UTC 时间进行转换,因为它们始终相同。事实上,如果服务器认为DateTime.UtcNow它位于该时区,则应返回与DateTime.Now相同的内容。

如果以 UTC 时间存储日期,则存储对单个时间点的引用,该引用可以转换为世界上任何其他时区的相同时间点。

我希望这个答案对一些人有所帮助。