获取当前时间的模块/方法是什么?
获取当前时间的模块/方法是什么?
使用:
>>> import datetime
>>> datetime.datetime.now()
datetime(2009, 1, 6, 15, 8, 24, 78915)
>>> print(datetime.datetime.now())
2018-07-29 09:17:13.812189
而且只是时间:
>>> datetime.datetime.time(datetime.datetime.now())
datetime.time(15, 8, 24, 78915)
>>> print(datetime.datetime.time(datetime.datetime.now()))
09:17:51.914526
相同,但稍微紧凑:
>>> datetime.datetime.now().time()
看到 文件 了解更多信息。
要保存输入,您可以导入 datetime
来自的对象 datetime
模块:
>>> from datetime import datetime
然后删除前导 datetime.
从以上所有。
使用:
>>> import datetime
>>> datetime.datetime.now()
datetime(2009, 1, 6, 15, 8, 24, 78915)
>>> print(datetime.datetime.now())
2018-07-29 09:17:13.812189
而且只是时间:
>>> datetime.datetime.time(datetime.datetime.now())
datetime.time(15, 8, 24, 78915)
>>> print(datetime.datetime.time(datetime.datetime.now()))
09:17:51.914526
相同,但稍微紧凑:
>>> datetime.datetime.now().time()
看到 文件 了解更多信息。
要保存输入,您可以导入 datetime
来自的对象 datetime
模块:
>>> from datetime import datetime
然后删除前导 datetime.
从以上所有。
您可以使用 time.strftime()
:
>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'
如同 哈利的回答,但使用 str()
功能为一个快速,肮脏,稍微更人性化的格式:
>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'
>>> from datetime import datetime
>>> datetime.now().strftime('%Y-%m-%d %H:%M:%S')
对于此示例,输出将如下所示: '2013-09-18 11:16:32'
这是列表 的strftime。
如何在Python中获取当前时间?
time
模该 time
模块提供的函数告诉我们“自纪元以来的秒数”以及其他实用程序的时间。
import time
这是您应该获取用于保存数据库的时间戳的格式。它是一个简单的浮点数,可以转换为整数。它也适用于以秒为单位的算术运算,因为它表示自1970年1月1日00:00:00以来的秒数,并且它是相对于我们下一步要查看的其他时间表示的记忆灯:
>>> time.time()
1424233311.771502
此时间戳不考虑闰秒,因此它不是线性的 - 忽略闰秒。因此虽然它不等同于国际UTC标准,但它很接近,因此对于大多数记录保存案例来说非常好。
然而,这对于人类调度来说并不理想。如果您希望在某个特定时间点发生未来事件,则需要将该时间存储为可以解析为日期时间对象或序列化日期时间对象的字符串(这些将在后面描述)。
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
该 datetime.now
是一个返回当前时间的类方法。它使用了 time.localtime
没有时区信息(如果没有给出,否则请参见下面的时区)。它有一个表示(允许你重新创建一个等效对象)在shell上回显,但是当打印(或强制到一个 str
),它是人类可读(和接近ISO)格式,字典排序等同于按时间顺序排序:
>>> 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.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中我们有 timezone
有一个utc的课程 timezone
实例附加,这也使对象时区可识别(但转换到另一个时区没有方便 pytz
模块留给读者练习:
>>> 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
你也可以用一个天真的日期时间对象来识别 pytz
时区 localize
方法,或通过替换tzinfo属性(使用 replace
,这是盲目地完成的,但这些是最后的度假胜地而不是最佳做法:
>>> 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>)
该 pytz
模块允许我们制作我们的 datetime
对象时区感知并将时间转换为可用的数百个时区 pytz
模块。
人们可以表面上将此对象序列化为UTC时间和存储 那 在数据库中,但它需要更多的内存,并且比简单地存储Unix Epoch时间更容易出错,我首先证明了这一点。
查看时间的其他方式更容易出错,尤其是在处理可能来自不同时区的数据时。您希望不存在关于字符串或序列化日期时间对象所针对的时区的混淆。
如果您正在为用户显示Python的时间, ctime
很好地工作,而不是在一个表(它通常不好),但也许在一个时钟。但是,我个人建议,在Python处理时间时,要么使用Unix时间,要么使用时区感知UTC datetime
目的。
做
from time import time
t = time()
t
- 浮点数,适用于时间间隔测量。Unix和Windows平台有一些区别。
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'
以指定的格式输出当前的GMT。还有一个localtime()方法。
这个 页 有更多细节。
所有好的建议,但我发现它最容易使用 ctime()
我:
In [2]: from time import ctime
In [3]: ctime()
Out[3]: 'Thu Oct 31 11:40:53 2013'
这给出了当前本地时间的格式良好的字符串表示。
如果您需要当前时间作为 time
目的:
>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)