【问题标题】:How datetime.datetime.now() works without internet connection?datetime.datetime.now() 在没有互联网连接的情况下如何工作?
【发布时间】:2018-01-31 14:05:42
【问题描述】:

在 python 中,通过导入 datetime 模块 并使用class datetime.datetime 的各种功能,我们可以得到基本的日期格式,甚至是用于部署的日期算法。

例如,datetime.datetime.now() 将返回今天的日期。

但是,今天当我运行这个程序时,我的电脑没有互联网连接,但它仍然输出今天的日期。

那么,datetime.datetime.now() 如何返回正确的日期?算法会在 24 小时后自动递增吗?

【问题讨论】:

  • 当你的计算机知道时,为什么代码会询问其他机器的日期和时间?
  • 好吧,电脑知道没有互联网连接怎么办?
  • 因为里面有时钟?
  • @W.Jack 想想你的 BIOS - 它可以在不利用网络的情况下保持时间。所有计算机都有一块电池,有助于保持 RTC 正常运行,并具有较小的内存优势。
  • @W.Jack 它利用了系统时间。您的系统时钟。尝试更改您的计算机时钟并再次运行以查看更改。

标签: python datetime time clock real-time-clock


【解决方案1】:

tl;dr datetime.datetime.now() 使用计算机内置的时钟。

计算机能够保持相当准确的时间比互联网存在的时间要长得多。

例如,PC 具有所谓的real-time clock (RTC)。它由电池供电,即使在计算机关闭时也能保持时间。

有趣的是,一些分布式算法require very accurate clocks 为了可靠运行。所需的精度远远超过了简单的基于振荡器的时钟所能提供的任何精度。

因此,像 Google 这样的公司在其数据中心运行 GPSatomic 时钟(即使这些也不是没有潜在问题,例如 on 26 January 2017,当一些 GPS 时钟出现时13 微秒,持续 10 小时)。

即使数据中心连接到互联网,GPS 和原子钟都不需要互联网连接来运行。此外,someone 需要保持所有互联网时间基础设施的运行......不可能每个人都“离开互联网”。 ;)

现在我们正在讨论跨计算机网络分配时间的主题,主要的协议是NTP (Network Time Protocol) and PTP (Precision Time Protocol)

【讨论】:

  • 值得一提的还有NTP服务,它可以将本地时钟与远程时间服务器同步。
  • 感谢您提供此信息。几十年来从未真正考虑过这一点。
【解决方案2】:

datetime.datetime.now() 的文档没有说明从 Internet 接收的时间。

返回当前的本地日期和时间。如果可选参数 tz 是 没有或没有指定,这就像今天(),但是,如果可能的话, 提供比通过 time.time() 时间戳(例如,这可能在平台上是可能的 提供 C gettimeofday() 函数)。

如果 tz 不是 None,它必须是 tzinfo 子类的实例,并且 当前日期和时间转换为 tz 的时区。在这个 结果相当于 tz.fromutc(datetime.utcnow().replace(tzinfo=tz))。参见今天(), utcnow().

datetime 是从计算机时间接收的,例如,如果您正在运行 windows,请尝试从窗口更改时间,python 将打印您更改的时间。

查看其文档:https://docs.python.org/2/library/datetime.html

【讨论】:

  • 这不是“当地时间”的意思。它的意思是“在计算机的时区”,而不是“不咨询外部资源”。 dictionary.com/browse/local-time
  • 感谢您的反馈。
猜你喜欢
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多