如何获取当前时间?

How do I get the current time?

提问人:user46646 提问时间:1/6/2009 最后编辑:Mateen Ulhaquser46646 更新时间:7/14/2023 访问量:4255851

问:

如何获取当前时间?

Python 日期时间

评论

75赞 Sławomir Lenart 4/30/2020
请注意,投票最多的答案是 Timezonoe Naïve DateTime,而我们看到在生产环境中,全球越来越多的服务连接在一起,时区感知 DateTime 成为必需的标准
6赞 Hitesh Garg 8/14/2021
这是 @S ławomirLenart 的一个非常有效的观点,这里有一个快速教程,展示了根据时区获取当前时间的多种方法

答:

3860赞 Harley Holcombe 1/6/2009 #1

使用 datetime

>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)
>>> print(now)
2009-01-06 15:08:24.789150

仅对于没有日期的时钟时间:

>>> now.time()
datetime.time(15, 8, 24, 78915)
>>> print(now.time())
15:08:24.789150

要节省键入时间,可以从 datetime 模块导入对象:datetime

>>> from datetime import datetime

然后从上述所有内容中删除前缀。datetime.

评论

54赞 Greg Lindahl 10/2/2018
如果这个答案涵盖时区(也许是 UTC 作为示例)并且可能以 time.time() 开头,那就太好了。
14赞 JiyuuSensei 10/18/2019
@Toskan格式不是问题的一部分,所以它不应该是答案的一部分。已经提供了一个指向该模块的更多文档的链接,其中包含格式化等内容。
0赞 RTHarston 10/29/2019
给出的原始答案是哪个版本的 Python?只需在我的 Python 2.7 交互式控制台中输入(IronPython 尚未更新)即可获得与答案中使用的新示例相同的行为。我还没有成功复制原始答案显示的内容(datetime.datetime(2009, 1, 6, 15, 8, 24, 78915))。(并不是说我真的想要,print() 行为是首选,但我很好奇。datetime.datetime.now()print()
0赞 Harley Holcombe 11/1/2019
@BobVicktor:Python 2.7、3.7 和 3.8 对我来说都给出了相同的行为,不确定你看到了什么。
0赞 RTHarston 11/1/2019
@HarleyHolcombe 嗯......也许这是 IronPython 的东西?当我自己打字时,它会打印出来,就像你的答案显示的那样......datetime.now()print(datetime.now())
1197赞 Sean James 1/6/2009 #2

使用 time.strftime():

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'

评论

62赞 Nathan majicvr.com 4/30/2018
这比下面@ParaMeterz的答案更好/更差吗?我们为什么要使用模块而不是模块?timedatetime
6赞 Saeed 10/29/2018
它不会返回我计算机的当前小时。
14赞 Voyager 3/12/2019
这是UTC时间,与datetime模块不同
41赞 Jeyekomon 7/3/2019
@Saeed:使用函数而不是 获取本地时间。localtime()gmtime()
5赞 Packard CPW 9/30/2019
@frank 参见 vs. 的相关问题datetimetime
121赞 Vijay Dev 1/6/2009 #3
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

这将以指定的格式输出当前 GMT。还有一个 localtime() 方法。

页面有更多详细信息。

156赞 maxp 1/6/2009 #4

from time import time

t = time()
  • t- 浮点数,适用于时间间隔测量。

Unix 和 Windows 平台存在一些差异。

评论

0赞 monkey 12/12/2019
我在 Windows 10 家庭版上的结果是 1576095264.2682993 - 对于 Windows,这可能只是以秒为单位给出时间。
66赞 bluish 12/27/2010 #5

如果需要当前时间作为对象:time

>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)
528赞 Ray 5/4/2011 #6

Harley 的答案类似,但将该函数用于快速肮脏、更易于人类阅读的格式:str()

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'

评论

5赞 pppery 4/12/2019
不相关;“STR”步骤不在问题的范围内
22赞 RTHarston 10/29/2019
@pppery 操作也没有说它不是关于获取时间字符串。操作根本没有说他们想用时间做什么,那么为什么展示如何将其转换为字符串是一件坏事呢?大多数答案都谈到了从时间中获取字符串,所以这似乎是一个常见的用例,那么为什么要挑出 Ray 的答案呢?只是在不知道如何用它做任何事情的情况下获得时间有什么用?你可以打印它,或者在上面做数学运算,只有几个答案显示了如何在上面做数学运算,所以我认为打印/获取字符串是一种常见的用途。;-)(我知道这就是我来的目的。
13赞 John 1/11/2020
这个答案有超过 440 个赞成票的事实表明,字符串方法的微小添加对很多人都很有用。
3赞 pppery 2/21/2020
440 人正在寻找不是问题实际答案的内容这一事实并不能使该内容成为问题的答案。
5赞 Ice Bear 12/31/2020
@pppery 事实上,这是回答问题的另一种方式,这使得它与与这个问题有类似问题的其他人相关。所以这个:)没有错
853赞 ParaMeterz 1/9/2013 #7
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')

输出示例:'2013-09-18 11:16:32'

请参阅 strftime 指令列表。

48赞 emmagras 6/25/2013 #8

.isoformat()在文档中,但尚未在此处 (这与@Ray Vega的回答非常相似):

>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'
80赞 nacholibre 9/24/2013 #9

最快的方法是:

>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
85赞 Ethereal 10/31/2013 #10

前面的答案都是很好的建议,但我发现它最容易使用:ctime()

In [2]: from time import ctime
In [3]: ctime()
Out[3]: 'Thu Oct 31 11:40:53 2013'

这给出了当前本地时间的格式良好的字符串表示形式。

评论

0赞 shripal mehta 12/6/2022
这实际上是一种非常有效的方法。仅导入一个函数(而不是整个类)会占用更少的时间空间,甚至有助于避免类或堆栈中其他函数的任何潜在名称混淆。
25赞 user2030113 5/20/2014 #11
>>> import datetime, time
>>> time = time.strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:21:38:20S'

评论

0赞 hlin117 10/27/2014
我想你的意思是说“datetime.now().strftime(...)”
0赞 user2030113 11/4/2014
是的,可以按照你说的去做。“datetime.datetime.now().strftime(”%H:%M:%S:%MS“)”
4赞 ZF007 6/14/2019
%MS不会给你毫秒!!
32赞 jfs 12/23/2014 #12

datetime.now()将当前时间作为表示本地时区时间的朴素 DateTime 对象返回。该值可能不明确,例如,在 DST 转换期间(“回退”)。为避免歧义,应使用 UTC 时区:

from datetime import datetime

utc_time = datetime.utcnow()
print(utc_time) # -> 2014-12-22 22:48:59.916417

或者附加了相应时区信息的时区感知对象 (Python 3.2+):

from datetime import datetime, timezone

now = datetime.now(timezone.utc).astimezone()
print(now) # -> 2014-12-23 01:49:25.837541+03:00

评论

0赞 Seth 6/15/2021
仅供参考,不建议使用 UTC 表示当前时间,因为它仍然返回一个“朴素”的 datetime 对象——相反,建议使用 as 返回一个“aware”的 datetime 对象。有关更多详细信息,请参阅 Python 文档:docs.python.org/3/library/...datetime.utcnow()datetime.now(timezone.utc)
0赞 jfs 6/16/2021
@Seth注意到 Python 3.2+ 解决方案已经在使用。也许,现在 Python 2.7 已经 EOL,nave-datetime 可能会被删除timezone.utc
0赞 Seth 6/19/2021
啊,我没有意识到这纯粹是为了与 Python 2.7 兼容——也许应该在帖子中澄清?至少在我看来,这篇文章似乎暗示天真和有意识的方法(仍然)是获取 UTC 时间的同样可接受的方法,这就是为什么我指出这不是 Python 的(最新)文档所说的。
33赞 Kristen G. 1/10/2015 #13

这就是我最终选择的:

>>>from time import strftime
>>>strftime("%m/%d/%Y %H:%M")
01/09/2015 13:11

此外,此表是选择适当的格式代码以按照您想要的方式格式化日期的必要参考(来自此处的 Python“日期时间”文档)。

strftime format code table

评论

2赞 jfs 1/10/2015
strftime(time_format)以字符串形式返回当前本地时间,该字符串对应于给定的 .注意:并支持不同的指令集,例如,Python 2 上的 time.strftime() 不支持 %ztime_formattime.strftime()datetime.strftime()
1赞 Kristen G. 1/16/2015
使用 datetime 而不是 time 是更好的做法吗?
2赞 jfs 1/16/2015
许多模块函数都是围绕相应 C 函数的薄包装器。 是更高级别的,通常更便携。timedatetime
51赞 Tom 2/7/2015 #14

您可以使用以下模块:time

>>> import time
>>> print(time.strftime("%d/%m/%Y"))
06/02/2015

资本的使用给出了一整年,使用将给出.Yy06/02/15

您还可以使用以下代码来提供更长的时间:

>>> time.strftime("%a, %d %b %Y %H:%M:%S")
'Fri, 06 Feb 2015 17:45:09'
517赞 Russia Must Remove Putin 2/18/2015 #15

如何在 Python 中获取当前时间?

模块time

该模块提供了以“自纪元以来的秒数”告诉我们时间的函数以及其他实用程序。time

import time

Unix 纪元时间

这是您应该获取时间戳以保存在数据库中的格式。它是一个简单的浮点数,可以转换为整数。它也适用于以秒为单位的算术,因为它表示自 1970 年 1 月 1 日 00:00:00 以来的秒数,并且相对于我们接下来要研究的其他时间表示,它是内存之光:

>>> time.time()
1424233311.771502

此时间戳不考虑闰秒,因此它不是线性的 - 忽略闰秒。因此,虽然它不等同于国际UTC标准,但它很接近,因此对于大多数记录保存情况来说相当不错。

然而,这对于人工调度来说并不理想。如果你希望在某个时间点发生一个未来事件,你需要用一个字符串来存储该时间,该字符串可以解析为一个对象或一个序列化对象(这些将在后面介绍)。datetimedatetime

time.ctime

您还可以以操作系统喜欢的方式表示当前时间(这意味着当您更改系统首选项时,它可能会更改,因此不要像我看到其他人所期望的那样,将其作为所有系统的标准)。这通常是用户友好的,但通常不会产生可以按时间顺序排序的字符串:

>>> time.ctime()
'Tue Feb 17 23:21:56 2015'

您还可以通过以下方式将时间戳水合为人类可读的形式:ctime

>>> time.ctime(1424233311.771502)
'Tue Feb 17 23:21:51 2015'

这种转换也不利于记录保存(除了只能由人类解析的文本 - 并且随着光学字符识别和人工智能的改进,我认为这些案例的数量将减少)。

datetime模块

该模块在这里也非常有用:datetime

>>> import datetime

datetime.datetime.now

是返回当前时间的类方法。它使用没有时区信息(如果未给出,否则请参阅下面的时区感知)。它有一个在外壳上回显的表示(这将允许您重新创建等效对象),但是当打印(或强制转换为)时,它是人类可读的(并且几乎是 ISO)格式,并且词典排序等同于按时间顺序排序:datetime.nowtime.localtimestr

>>> datetime.datetime.now()
datetime.datetime(2015, 2, 17, 23, 43, 49, 94252)
>>> print(datetime.datetime.now())
2015-02-17 23:43:51.782461

日期时间的utcnow

您可以通过执行以下操作来获取 UTC 时间(全局标准)的 datetime 对象:

>>> datetime.datetime.utcnow()
datetime.datetime(2015, 2, 18, 4, 53, 28, 394163)
>>> print(datetime.datetime.utcnow())
2015-02-18 04:53:31.783988

UTC 是一种时间标准,几乎等同于 GMT 时区。(虽然 GMT 和 UTC 不会因夏令时而改变,但其用户可能会在夏季切换到其他时区,例如英国夏令时。

日期时间时区感知

但是,到目前为止,我们创建的日期时间对象都无法轻松转换为各种时区。我们可以使用模块解决该问题:pytz

>>> import pytz
>>> then = datetime.datetime.now(pytz.utc)
>>> then
datetime.datetime(2015, 2, 18, 4, 55, 58, 753949, tzinfo=<UTC>)

等效地,在 Python 3 中,我们有一个附加了 utc 实例的类,这也使对象时区可以感知(但是在没有 handy 模块的情况下转换为另一个时区是留给读者的练习):timezonetimezonepytz

>>> datetime.datetime.now(datetime.timezone.utc)
datetime.datetime(2015, 2, 18, 22, 31, 56, 564191, tzinfo=datetime.timezone.utc)

我们看到我们可以轻松地从原始 UTC 对象转换为时区。

>>> print(then)
2015-02-18 04:55:58.753949+00:00
>>> print(then.astimezone(pytz.timezone('US/Eastern')))
2015-02-17 23:55:58.753949-05:00

您还可以使用 timezone 方法或通过替换 tzinfo 属性(使用 ,这是盲目完成的)来使幼稚的 datetime 对象能够识别,但这些是最后的手段,而不是最佳实践:pytzlocalizereplace

>>> pytz.utc.localize(datetime.datetime.utcnow())
datetime.datetime(2015, 2, 18, 6, 6, 29, 32285, tzinfo=<UTC>)
>>> datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
datetime.datetime(2015, 2, 18, 6, 9, 30, 728550, tzinfo=<UTC>)

该模块允许我们使对象了解时区,并将时间转换为模块中可用的数百个时区。pytzdatetimepytz

从表面上看,我们可以将这个对象序列化为 UTC 时间并将其存储在数据库中,但它需要更多的内存,并且比简单地存储 Unix Epoch 时间更容易出错,我首先演示了这一点。

查看时间的其他方式更容易出错,尤其是在处理可能来自不同时区的数据时。您希望不会混淆字符串或序列化的 datetime 对象用于哪个时区。

如果您使用 Python 为用户显示时间,则效果很好,不是在表格中(它通常不能很好地排序),而是在时钟中。但是,我个人建议,在 Python 中处理时间时,要么使用 Unix 时间,要么使用时区感知 UTC 对象。ctimedatetime

评论

0赞 ArtOfWarfare 9/6/2020
我想每个人都会同意,这一定是有史以来最奇怪的日期时间格式化方式。缩写为星期几和月份、月份中的某一天、24 小时小时 h:m:s,然后是四位数的年份。喜欢对日期字符串进行排序的书、美国人、欧洲人......每个人——是的,每个人——都可以在这种形式下找到至少两件值得恼火的事情。虽然我会使用它,因为它超级简单。ctime
0赞 Russia Must Remove Putin 9/6/2020
正如我上面所说:“您还可以以操作系统喜欢的方式表示当前时间(这意味着当您更改系统首选项时,它可能会发生变化,因此不要像我看到其他人所期望的那样,依赖它成为所有系统的标准)。这通常是用户友好的,但通常不会产生可以按时间顺序排序的字符串:”ctime
1赞 FObersteiner 4/4/2023
这可以通过添加对 zoneinfo 的引用来改进;pytz 虽然在许多依赖规范上预发送,但自 Python 3.9 以来就已经过时了。
21赞 Back2Basics 11/14/2015 #16

尝试 http://crsmithdev.com/arrow/ 中的箭头模块:

import arrow
arrow.now()

或 UTC 版本:

arrow.utcnow()

要更改其输出,请添加 .format():

arrow.utcnow().format('YYYY-MM-DD HH:mm:ss ZZ')

对于特定时区:

arrow.now('US/Pacific')

一小时前:

arrow.utcnow().replace(hours=-1)

或者,如果你想要要点。

arrow.get('2013-05-11T21:23:58.970460+00:00').humanize()
>>> '2 years ago'

评论

7赞 jfs 11/14/2015
请注意,某些时区可能会失败( 使用已破坏 UTC 的 dateUtil -> 内部使用的本地转换。注意:pytz 没有这样的问题。此外,还有其他与时区相关的问题arrow.now('Time/Zone')arrowarrow.now()
19赞 y.selivonchyk 7/18/2016 #17

要精确地获得毫秒的小数点后 3 ,请运行以下命令:11:34:23.751

def get_time_str(decimal_points=3):
        return time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 10**decimal_points)

更多背景信息:

我想用毫秒来计算时间。获取它们的简单方法:

import time, datetime

print(datetime.datetime.now().time())                         # 11:20:08.272239

# Or in a more complicated way
print(datetime.datetime.now().time().isoformat())             # 11:20:08.272239
print(datetime.datetime.now().time().strftime('%H:%M:%S.%f')) # 11:20:08.272239

# But do not use this:
print(time.strftime("%H:%M:%S.%f", time.localtime()), str)    # 11:20:08.%f

但我只想要几毫秒,对吧?获取它们的最短方法:

import time

time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 1000)
# 11:34:23.751

在最后一个乘法中添加或删除零以调整小数点数,或者只是:

def get_time_str(decimal_points=3):
    return time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 10**decimal_points)

评论

1赞 Greg Graham 9/27/2016
这在 Python 3 中有效:time.strftime(“%H:%M:%S”, time.localtime()) + '。{}'.format(int(time.time() % 1 * 1000))
43赞 C8H10N4O2 8/20/2016 #18

为什么不问问美国海军的官方计时员美国海军天文台呢?

import requests
from lxml import html

page = requests.get('http://tycho.usno.navy.mil/cgi-bin/timer.pl')
tree = html.fromstring(page.content)
print(tree.xpath('//html//body//h3//pre/text()')[1])

如果你住在华盛顿特区(像我一样),延迟可能不会太糟糕......

评论

23赞 sudobangbang 10/28/2016
@C8H10N4O2 虽然您正确地认为其他答案假设您的计算机已经知道正确的时间,但此答案假设计算机已连接到互联网,您在美国,并且他们永远不会删除该文件/更改链接。这个答案中的假设比接受的要多得多。仍然很聪明
1赞 Roland 4/27/2021
除了内置时钟之外,还有另一个时间来源,真是太好了!甚至是更合乎逻辑的 NTP 选择的一个很好的替代方案。
1赞 MikeF 7/8/2022
站点不再可用 $ curl tycho.usno.navy.mil/cgi-bin/timer.pl curl: (6) 无法解析主机: tycho.usno.navy.mil
25赞 theBuzzyCoder 4/9/2017 #19
import datetime
date_time = datetime.datetime.now()

date = date_time.date()  # Gives the date
time = date_time.time()  # Gives the time

print date.year, date.month, date.day
print time.hour, time.minute, time.second, time.microsecond

Do 或任何变量,包括包。您可以获取与变量关联的所有属性和方法。dir(date)

评论

0赞 theBuzzyCoder 4/21/2017
@snofty 和 @user1016274,如果是 \n 如果import datetimedatetime.datetime.now()from datetime import datetimedatetime.now()
43赞 prudhvi Indana 9/22/2017 #20

使用 pandas 来获取当前时间,有点矫枉过正手头的问题:

import pandas as pd
print(pd.datetime.now())
print(pd.datetime.now().date())
print(pd.datetime.now().year)
print(pd.datetime.now().month)
print(pd.datetime.now().day)
print(pd.datetime.now().hour)
print(pd.datetime.now().minute)
print(pd.datetime.now().second)
print(pd.datetime.now().microsecond)

输出:

2017-09-22 12:44:56.092642
2017-09-22
2017
9
22
12
44
56
92693

评论

4赞 bfree67 9/29/2020
此方法将在 pandas 的未来版本中弃用。请改用 datetime 模块。
35赞 durjoy 11/7/2017 #21

如果您已经在使用 numpy,那么您可以直接使用 numpy.datetime64() 功能。

import numpy as np
str(np.datetime64('now'))

仅日期:

str(np.datetime64('today'))

或者,如果您已经在使用 pandas,那么您可以使用 pandas.to_datetime() 函数

import pandas as pd
str(pd.to_datetime('now'))

str(pd.to_datetime('today'))
18赞 Richie Bendall 11/29/2017 #22

您可以使用此函数来获取时间(不幸的是,它没有显示 AM 或 PM):

def gettime():
    from datetime import datetime
    return ((str(datetime.now())).split(' ')[1]).split('.')[0]

若要获取稍后要合并的小时、分钟、秒和毫秒,可以使用以下函数:

小时:

def gethour():
    from datetime import datetime
    return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[0]

分钟:

def getminute():
    from datetime import datetime
    return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[1]

第二:

def getsecond():
    from datetime import datetime
    return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[2]

毫秒:

def getmillisecond():
    from datetime import datetime
    return (str(datetime.now())).split('.')[1]
22赞 Madhusudhan R 3/1/2018 #23

默认情况下,function 以以下格式返回输出。使用以下示例脚本获取 Python 脚本中的当前日期和时间,并在屏幕上打印结果。使用以下内容创建文件。now()YYYY-MM-DD HH:MM:SS:MSgetDateTime1.py

import datetime

currentDT = datetime.datetime.now()
print (str(currentDT))

输出如下所示:

2018-03-01 17:03:46.759624
15赞 kungphu 7/6/2018 #24

因为还没有人提到它,这是我最近遇到的......pytz 时区的 fromutc() 方法与 datetime 的 utcnow() 相结合是我发现在任何时区获取有用的当前时间(和日期)的最佳方法。

from datetime import datetime

import pytz


JST = pytz.timezone("Asia/Tokyo")


local_time = JST.fromutc(datetime.utcnow())

如果你想要的只是时间,那么你可以用 .local_time.time()

评论

0赞 GraphicalDot 8/31/2018
令人惊讶的是,上述所有答案都没有提到时区。您还应该包括 strftime 以获得所需的格式。
1赞 kungphu 9/1/2018
我没有包括它,因为它已经包含在其他答案中(并且显示格式不是问题的一部分)。
18赞 motagirl2 7/18/2018 #25

如果你只想用毫秒为单位的当前时间戳(例如,测量执行时间),你也可以使用“timeit”模块:

import timeit
start_time = timeit.default_timer()
do_stuff_you_want_to_measure()
end_time = timeit.default_timer()
print("Elapsed time: {}".format(end_time - start_time))
25赞 Ben 8/14/2018 #26

这个问题不需要新的答案......然而,一个闪亮的新玩具/模块就足够了。这就是 Pendulum 库,它似乎可以做 arrow 尝试过的那种事情,除了没有困扰 arrow 的固有缺陷和错误。

例如,原始问题的答案:

>>> import pendulum
>>> print(pendulum.now())
2018-08-14T05:29:28.315802+10:00
>>> print(pendulum.now('utc'))
2018-08-13T19:29:35.051023+00:00

有很多标准需要解决,包括多个 RFC 和 ISO,需要担心。永远不要把它们混为一谈;不用担心,看看那里除了 RFC 和 ISO 格式之外还有更多的东西。dir(pendulum.constants)

但是,当我们说本地时,我们是什么意思?嗯,我的意思是:

>>> print(pendulum.now().timezone_name)
Australia/Melbourne
>>>

想必你们中的大多数人指的是其他地方。

就这样吧。长话短说:Pendulum尝试对日期和时间执行请求对HTTP的执行操作。这是值得考虑的,特别是因为它的易用性和广泛的文档。

14赞 Jobin James 10/13/2019 #27
import datetime

todays_date = datetime.date.today()
print(todays_date)
>>> 2019-10-12

# adding strftime will remove the seconds
current_time = datetime.datetime.now().strftime('%H:%M')
print(current_time)
>>> 23:38
19赞 champion-runner 10/18/2019 #28

时区的当前时间

from datetime import datetime
import pytz

tz_NY = pytz.timezone('America/New_York') 
datetime_NY = datetime.now(tz_NY)
print("NY time:", datetime_NY.strftime("%H:%M:%S"))

tz_London = pytz.timezone('Europe/London')
datetime_London = datetime.now(tz_London)
print("London time:", datetime_London.strftime("%H:%M:%S"))

tz_India = pytz.timezone('Asia/India')
datetime_India = datetime.now(tz_India)
print("India time:", datetime_India.strftime("%H:%M:%S"))

#list timezones
pytz.all_timezones
13赞 Littin Rajan 4/18/2020 #29

方法 1:从系统日期时间获取当前日期和时间

datetime 模块提供用于操作日期和时间的类。

法典

from datetime import datetime,date

print("Date: "+str(date.today().year)+"-"+str(date.today().month)+"-"+str(date.today().day))
print("Year: "+str(date.today().year))
print("Month: "+str(date.today().month))
print("Day: "+str(date.today().day)+"\n")

print("Time: "+str(datetime.today().hour)+":"+str(datetime.today().minute)+":"+str(datetime.today().second))
print("Hour: "+str(datetime.today().hour))
print("Minute: "+str(datetime.today().minute))
print("Second: "+str(datetime.today().second))
print("MilliSecond: "+str(datetime.today().microsecond))

输出将像

Date: 2020-4-18
Year: 2020
Month: 4
Day: 18

Time: 19:30:5
Hour: 19
Minute: 30
Second: 5
MilliSecond: 836071

方法2:如果网络可用,则获取当前日期和时间

urllib 包帮助我们处理 url 的意思是网页。在这里,我们从网页 http://just-the-time.appspot.com/ 收集数据,并使用包 dateparser 解析网页中的日期

法典

from urllib.request import urlopen
import dateparser

time_url = urlopen(u'http://just-the-time.appspot.com/')
datetime = time_url.read().decode("utf-8", errors="ignore").split(' ')[:-1]
date = datetime[0]
time = datetime[1]

print("Date: "+str(date))
print("Year: "+str(date.split('-')[0]))
print("Month: "+str(date.split('-')[1]))
print("Day: "+str(date.split('-')[2])+'\n')

print("Time: "+str(time))
print("Hour: "+str(time.split(':')[0]))
print("Minute: "+str(time.split(':')[1]))
print("Second: "+str(time.split(':')[2]))

输出将像

Date: 2020-04-18
Year: 2020
Month: 04
Day: 18

Time: 14:17:10
Hour: 14
Minute: 17
Second: 10

方法3:从本机的本地时间获取当前日期和时间

Python 的 time 模块提供了一个函数,用于从名为 localtime() 的纪元以来经过的秒数中获取本地时间。ctime() 函数将自纪元以来传递的秒数作为参数,并返回一个表示本地时间的字符串。

法典

from time import time, ctime
datetime = ctime(time()).split(' ')

print("Date: "+str(datetime[4])+"-"+str(datetime[1])+"-"+str(datetime[2]))
print("Year: "+str(datetime[4]))
print("Month: "+str(datetime[1]))
print("Day: "+str(datetime[2]))
print("Week Day: "+str(datetime[0])+'\n')

print("Time: "+str(datetime[3]))
print("Hour: "+str(datetime[3]).split(':')[0])
print("Minute: "+str(datetime[3]).split(':')[1])
print("Second: "+str(datetime[3]).split(':')[2])

输出将像

Date: 2020-Apr-18
Year: 2020
Month: Apr
Day: 18
Week Day: Sat

Time: 19:30:20
Hour: 19
Minute: 30
Second: 20
18赞 Umutambyi Gad 6/5/2020 #30

您可以尝试以下操作

import datetime

now = datetime.datetime.now()
print(now)

import datetime

now = datetime.datetime.now()
print(now.strftime("%Y-%b-%d, %A %I:%M:%S"))