datetime.datetime.now()如何在没有互联网连接的情况下工作?

时间:2017-08-23 06:17:51

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

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

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

enter image description here

但是,今天当我运行这个程序时,我的计算机上没有互联网连接,但仍然输出了今天的日期。

那么,datetime.datetime.now()如何才能恢复正确的约会?算法会在24小时后自动递增吗?

2 个答案:

答案 0 :(得分:5)

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

与互联网相比,计算机能够保持相当准确的时间。

例如,PC具有称为real-time clock(RTC)的功能。它由电池供电,即使在电脑关闭时也能保持时间。

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

因此,像谷歌这样的公司在其数据中心运行GPSatomic个时钟(甚至那些并非没有潜在问题,例如on 26 January 2017所示,当一些GPS时钟超过13微秒,持续10个小时)。

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

既然我们已经开始在计算机网络上分配时间,那么执行此操作的主要协议是NTP (Network Time Protocol) and PTP (Precision Time Protocol)

答案 1 :(得分:1)

datetime.datetime.now()的文档未说明从互联网收到的时间。

  

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

     

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

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

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