当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中获取当前时间

如何解决《如何在Python中获取当前时间》经验,为你挑选了30个好方法。

获取当前时间的模块/方法是什么?



1> Harley Holco..:

使用:

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)

>>> print(datetime.datetime.now())
2009-01-06 15:08:24.789150

只是时间:

>>> datetime.datetime.now().time()
datetime.time(15, 8, 24, 78915)

>>> print(datetime.datetime.now().time())
15:08:24.789150

有关更多信息,请参阅文档.

要保存键入,可以datetimedatetime模块导入对象:

>>> from datetime import datetime

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


如果这个答案涵盖时区(可能是UTC作为示例)并且可能以time.time()开头,那将是很好的.

2> Sean James..:

你可以使用time.strftime():

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


这比@ ParaMeterz的答案更好/更差吗?我们为什么要使用`time`模块和`datetime`模块?
@frank请参阅[相关问题](/sf/ask/17360801/)关于“日期时间”与“时间”的信息。
它不返回我计算机的当前时间。
这是UTC时间,不同于datetime模块

3> ParaMeterz..:
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')

对于此示例,输出将如下所示: '2013-09-18 11:16:32'

这是strftime的列表.



4> Ray Vega..:

与Harley的答案类似,但使用该str()功能可以实现快速,简洁,易读的格式:

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


它所要求的只是获取当前时间,而不是显示它.
不相干; “ str”步骤不在问题范围内

5> Aaron Hall..:
如何在Python中获取当前时间?

time模块

time模块提供的功能告诉我们"自纪元以来的秒数"以及其他实用程序的时间.

import time

Unix大纪元时间

这是您应该获取用于保存数据库的时间戳的格式.它是一个简单的浮点数,可以转换为整数.它也适用于以秒为单位的算术运算,因为它表示自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上回显,但是当打印(或强制转换为a 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不会因夏令时而改变,但他们的用户可能会在暑假期间切换到其他时区,例如英国夏令时.)

datetime timezone意识到

但是,到目前为止我们创建的日期时间对象都不能轻易转换为各种时区.我们可以用pytz模块解决这个问题:

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

同样地,在Python 3中我们有timezone一个timezone附加了utc 实例的类,这也使得对象时区可以识别(但是转换到另一个时区而没有方便的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

您还可以使用pytztimezone localize方法识别天真的日期时间对象,或者通过替换tzinfo属性(使用replace,这是盲目地完成),但这些是最后的解决方案而不是最佳实践:

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

pytz模块允许我们使我们的datetime对象能够识别时区,并将时间转换为pytz模块中可用的数百个时区.

人们可以表面上连载这个对象UTC时间和存储在数据库中,但它需要远远更多的内存和比简单地存储Unix纪元的时间,这是我第一次表现出更容易出错.

查看时间的其他方式更容易出错,尤其是在处理可能来自不同时区的数据时.您希望不存在关于字符串或序列化日期时间对象所针对的时区的混淆.

如果您正在为用户显示Python的时间,那么ctime可以很好地工作,而不是在表格中(通常不能很好地排序),但也许在时钟中.但是,我个人建议,在处理Python的时间时,要么使用Unix时间,要么使用时区感知的UTC datetime对象.



6> maxp..:

from time import time

t = time()

t - 浮点数,适用于时间间隔测量.

Unix和Windows平台有一些区别.



7> Vijay Dev..:
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

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

此页面包含更多详细信息.



8> Ethereal..:

所有好的建议,但我觉得最容易使用ctime()自己:

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

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



9> nacholibre..:

最快的方法是

>>> import time
>>> time.strftime("%Y%m%d")
'20130924'



10> bluish..:

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

>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)



11> emmagras..:

.isoformat() 在文档中,但还没有在这里(这与@Ray Vega的答案相似):

>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'



12> C8H10N4O2..:

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

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])

如果你住在DC区域(像我一样),延迟可能不会太糟糕......


@ C8H10N4O2虽然你的答案是正确的,但其他答案都假设您的计算机已经知道正确的时间,这个答案假定计算机已连接到互联网,您在美国,并且他们永远不会删除该文件/改变链接.这个答案中的假设比接受的要多得多.但仍然很聪明

13> 小智..:

使用熊猫来获取当前时间,过度杀死手头的问题:

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



14> Kristen G...:

这就是我最终的目的:

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

此外,该表是选择适当的格式代码得到格式化只是你想要的方式日期(从Python的"日期时间"的文档的必要参考这里).

strftime格式代码表


`strftime(time_format)`将当前本地时间作为与给定`time_format`对应的字符串返回.注意:`time.strftime()`和`datetime.strftime()`支持不同的指令集,例如,Python上的`time.strftime()`不支持[`%z`](https:// docs. python.org/2/library/time.html#time.strftime).
许多`time`模块函数是围绕相应C函数的瘦包装器.`datetime`是一个更高级别,它通常更便携.

15> durjoy..:

如果您已经使用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'))



16> 小智..:

您可以使用该time模块.

import time
print time.strftime("%d/%m/%Y")

>>> 06/02/2015

资本的使用Y给了整年,使用y会给06/02/15.

你也可以使用更长的时间.

time.strftime("%a, %d %b %Y %H:%M:%S")
>>> 'Fri, 06 Feb 2015 17:45:09'



17> theBuzzyCode..:
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

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



18> jfs..:

datetime.now()将当前时间作为一个天真的日期时间对象返回,该对象表示本地时区的时间.该值可能是不明确的,例如,在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



19> user2030113..:
>>> import datetime, time
>>> time = time.strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:21:38:20S'



20> 小智..:

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

import datetime

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

输出如下所示:

2018-03-01 17:03:46.759624



21> Back2Basics..:

尝试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'


请注意`arrow.now('Time/Zone')`可能会因某些时区失败(```使用[`dateutil`打破了utc - >本地转换](https://github.com/dateutil/dateutil/在`arrow.now()`中使用的问题/ 112).注意:[`pytz`没有这样的问题](http://stackoverflow.com/q/31886808/4279).此外,[还有其他时区相关问题](http://stackoverflow.com/questions/28087218/parse-date-and-time-from-string-with-time-zone-using-arrow/28095706#comment44593877_28095706)

22> Ben..:

这个问题不仅仅是为了它而需要一个新的答案......然而,一个闪亮的新玩具/模块是足够的理由.这就是Pendulum库,它似乎做了箭头尝试的那种东西,除了没有固有的缺陷和错误箭头.

例如,原始问题的答案:

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

需要担心的是许多标准需要解决,包括多个RFC和ISO.曾经混淆了他们; 不用担心,请稍微研究一下,dir(pendulum.constants)那里有比RFC和ISO格式更多的东西.

当我们说当地时,虽然我们的意思是什么?我的意思是:

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

据推测,其他大多数人都是在其他地方.

就这样吧.长话短说:Pendulum试图为日期和时间做什么请求对HTTP.值得考虑,特别是它的易用性和广泛的文档.



23> y.selivonchy..:

我想用毫秒来得到时间.获得它们的简单方法:

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)



24> motagirl2..:

如果您只想要以ms为单位的当前时间戳(例如,测量执行时间),您还可以使用"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> Richie Benda..:

您可以使用此功能来获取时间(不幸的是它不说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]



26> kungphu..:

因为还没有人提到它,这是我最近遇到的事情......一个pytz时区的fromutc()方法结合datetime的utcnow()是我发现获得有用的当前时间(和日期)的最好方法在任何时区.

from datetime import datetime

import pytz


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


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

如果你想要的只是时间,你就可以得到它local_time.time().



27> Amro elaswar..:

以下是我用来获取时间而不必格式化的内容.有些人不喜欢split方法,但它在这里很有用:

from time import ctime
print ctime().split()[3]

它将以HH:MM:SS格式打印.



28> Abhijeet Des..:
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time

日期将打印日期和时间将打印时间.



29> Anupam..:

This question is for Python but since Django is one of the most widely used frameworks for Python, its important to note that if you are using Django you can always use timezone.now() instead of datetime.datetime.now(). The former is timezone 'aware' while the latter is not.

See this SO answer and the Django doc for details and rationale behind timezone.now().

from django.utils import timezone

now = timezone.now()



30> 小智..:

获取当前日期时间属性:

import datetime

currentDT = datetime.datetime.now()

print ("Current Year is: %d" % currentDT.year)
print ("Current Month is: %d" % currentDT.month)
print ("Current Day is: %d" % currentDT.day)
print ("Current Hour is: %d" % currentDT.hour)
print ("Current Minute is: %d" % currentDT.minute)
print ("Current Second is: %d" % currentDT.second)
print ("Current Microsecond is: %d" % currentDT.microsecond)


#!/usr/bin/python
import time;

ticks = time.time()
print "Number of ticks since "12:00am, Jan 1, 1970":", ticks

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有