在python中,通过导入 datetime模块并使用class datetime.datetime
的各种功能,我们可以获得基本的日期格式,甚至可以使用日期算法进行部署。
例如, datetime.datetime.now()将返回今天的日期。
但是,今天当我运行这个程序时,我的计算机上没有互联网连接,但仍然输出了今天的日期。
那么,datetime.datetime.now()
如何才能恢复正确的约会?算法会在24小时后自动递增吗?
答案 0 :(得分:5)
tl; dr datetime.datetime.now()
使用计算机内置的时钟。
与互联网相比,计算机能够保持相当准确的时间。
例如,PC具有称为real-time clock(RTC)的功能。它由电池供电,即使在电脑关闭时也能保持时间。
有趣的是,为了可靠地运行,一些分布式算法require very accurate clocks。所需的精度远远超过基于振荡器的简单时钟所能提供的任何精度。
因此,像谷歌这样的公司在其数据中心运行GPS和atomic个时钟(甚至那些并非没有潜在问题,例如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将打印您更改的时间。