用于获取当前时间的模块/方法是什么?
使用:
1 2 3 4 5 6 | >>> import datetime >>> datetime.datetime.now() datetime.datetime(2009, 1, 6, 15, 8, 24, 78915) >>> print(datetime.datetime.now()) 2018-07-29 09:17:13.812189 |
还有时间:
1 2 3 4 5 | >>> datetime.datetime.now().time() datetime.time(15, 8, 24, 78915) >>> print(datetime.datetime.now().time()) 09:17:51.914526 |
有关更多信息,请参阅文档。
要保存类型,可以从
1 | >>> from datetime import datetime |
然后将前面的
你可以使用
1 2 3 | >>> from time import gmtime, strftime >>> strftime("%Y-%m-%d %H:%M:%S", gmtime()) '2009-01-05 22:14:39' |
1 2 | from datetime import datetime datetime.now().strftime('%Y-%m-%d %H:%M:%S') |
对于本例,输出如下:
这是strftime的列表。
类似于Harley的答案,但是使用
1 2 3 | >>> from datetime import datetime >>> str(datetime.now()) '2011-05-03 17:45:35.177000' |
How do I get the current time in Python?
1 | import time |
Unix纪元的时间
这是保存到数据库中的时间戳的格式。它是一个简单的浮点数,可以转换为整数。它也适用于以秒为单位的算术,因为它表示自1970年1月1日00:00:00以来的秒数,它是相对于我们接下来要看的其他时间表示的内存光:
1 2 | >>> time.time() 1424233311.771502 |
这个时间戳不考虑闰秒,所以它不是线性的——闰秒被忽略。因此,虽然它不等于国际协调世界时标准,但它是接近的,因此对于大多数情况下的记录保持相当好。
然而,这对于人工调度并不理想。如果您将来希望在某个时间点发生某个事件,那么您将希望使用一个字符串来存储该时间,该字符串可以解析为datetime对象或序列化的datetime对象(稍后将对此进行描述)。
time.ctime
您还可以用您的操作系统所喜欢的方式表示当前时间(这意味着当您更改系统首选项时,它会发生更改,所以不要像我看到的其他人所期望的那样,依赖于它成为所有系统的标准时间)。这通常是用户友好的,但通常不会导致字符串可以按时间顺序排序:
1 2 | >>> time.ctime() 'Tue Feb 17 23:21:56 2015' |
您还可以使用
1 2 | >>> time.ctime(1424233311.771502) 'Tue Feb 17 23:21:51 2015' |
这种转换对记录保存也不好(除了文本只能由人类解析——随着光学字符识别和人工智能的改进,我认为这种情况的数量将会减少)。
1 | >>> import datetime |
datetime.datetime.now
1 2 3 4 | >>> datetime.datetime.now() datetime.datetime(2015, 2, 17, 23, 43, 49, 94252) >>> print(datetime.datetime.now()) 2015-02-17 23:43:51.782461 |
datetime的utcnow
你可以得到一个UTC时间的datetime对象,一个全局标准,通过这样做:
1 2 3 4 | >>> datetime.datetime.utcnow() datetime.datetime(2015, 2, 18, 4, 53, 28, 394163) >>> print(datetime.datetime.utcnow()) 2015-02-18 04:53:31.783988 |
UTC是一个几乎相当于格林尼治时区的时间标准。(虽然格林威治标准时间和UTC夏令时不会改变,但它们的用户可以在夏季切换到其他时区,比如英国的夏季时间。)
datetime时区知道
但是,到目前为止,我们创建的所有datetime对象都不能轻松转换为不同的时区。我们可以用
1 2 3 4 | >>> import pytz >>> then = datetime.datetime.now(pytz.utc) >>> then datetime.datetime(2015, 2, 18, 4, 55, 58, 753949, tzinfo=<UTC>) |
同样,在Python 3中,我们有
1 2 | >>> datetime.datetime.now(datetime.timezone.utc) datetime.datetime(2015, 2, 18, 22, 31, 56, 564191, tzinfo=datetime.timezone.utc) |
我们可以很容易地将原始utc对象转换为时区。
1 2 3 4 | >>> 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 |
您还可以使用
1 2 3 4 | >>> 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>) |
我们可以表面上序列化这个对象的UTC时间并将其存储在数据库中,但是它需要更多的内存,而且比简单地存储Unix历元时间更容易出错,我首先演示了这一点。
其他查看时间的方法更容易出错,尤其是在处理可能来自不同时区的数据时。您希望不要混淆字符串或序列化的datetime对象的目标时区。
如果您使用Python为用户显示时间,
做
1 2 3 | from time import time t = time() |
Unix平台和Windows平台有一些不同。
1 2 3 | >>> from time import gmtime, strftime >>> strftime("%a, %d %b %Y %X +0000", gmtime()) 'Tue, 06 Jan 2009 04:54:56 +0000' |
以指定格式输出当前GMT。还有一个localtime()方法。
本页有更多细节。
这些都是很好的建议,但我发现自己最容易使用
1 2 3 | In [2]: from time import ctime In [3]: ctime() Out[3]: 'Thu Oct 31 11:40:53 2013' |
这提供了当前本地时间的格式良好的字符串表示。
简单和容易的:
使用
1 2 | import datetime print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) |
输出:
1 | 2017-10-17 23:48:55 |
或
使用
1 2 | import time print(time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())) |
输出:
1 | 2017-10-17 18:22:26 |
如果你需要一个
1 2 3 4 | >>> import datetime >>> now = datetime.datetime.now() >>> datetime.time(now.hour, now.minute, now.second) datetime.time(11, 23, 44) |
最快的方法是
1 2 3 | >>> import time >>> time.strftime("%Y%m%d") '20130924' |
1 2 3 | >>> import datetime >>> datetime.datetime.now().isoformat() '2013-06-24T20:35:55.982000' |
为什么不问问美国海军官方计时机构美国海军天文台呢?
1 2 3 4 5 6 | 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]) |
如果你住在华盛顿特区(像我一样),延迟可能不会太糟…
这就是我最后的结论:
1 2 3 | >>>from time import strftime >>>strftime("%m/%d/%Y %H:%M") 01/09/2015 13:11 |
此外,对于选择适当的格式代码以获得按您希望的方式格式化的日期(从这里的Python"datetime"文档),这个表也是一个必要的参考。
用熊猫来获取当前时间,有点过分地扼杀了眼前的问题:
1 2 3 4 5 6 7 8 9 10 | 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) |
输出:
1 2 3 4 5 6 7 8 9 | 2017-09-22 12:44:56.092642 2017-09-22 2017 9 22 12 44 56 92693 |
1 2 3 4 5 6 7 8 | 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 |
执行
1 2 3 4 | from datetime import datetime utc_time = datetime.utcnow() print(utc_time) # -> 2014-12-22 22:48:59.916417 |
或具有相应时区信息的时区感知对象(Python 3.2+):
1 2 3 4 | from datetime import datetime, timezone now = datetime.now(timezone.utc).astimezone() print(now) # -> 2014-12-23 01:49:25.837541+03:00 |
从http://crsmithdev.com/arrow/尝试箭头模块:
1 2 | import arrow arrow.now() |
或UTC版本:
1 | arrow.utcnow() |
若要更改输出,请添加.format():
1 | arrow.utcnow().format('YYYY-MM-DD HH:mm:ss ZZ') |
特定时区:
1 | arrow.now('US/Pacific') |
一个小时前:
1 | arrow.utcnow().replace(hours=-1) |
或者如果你想知道要点。
1 2 | arrow.get('2013-05-11T21:23:58.970460+00:00').humanize() >>> '2 years ago' |
如果您已经在使用NumPy,那么可以直接使用NumPy .datetime64()函数。
1 2 | import numpy as np str(np.datetime64('now')) |
只适用于日期:
1 | str(np.datetime64('today')) |
或者,如果您已经在使用panda,那么可以使用Pandas .to_datetime()函数:
1 2 | import pandas as pd str(pd.to_datetime('now')) |
或者:
1 | str(pd.to_datetime('today')) |
默认情况下,
1 2 3 4 | import datetime currentDT = datetime.datetime.now() print (str(currentDT)) |
输出如下:
1 | 2018-03-01 17:03:46.759624 |
您可以使用
1 2 3 4 | import time print time.strftime("%d/%m/%Y") >>> 06/02/2015 |
使用大写字母表示全年,使用大写字母表示全年。
你也可以用更长的时间。
1 2 | time.strftime("%a, %d %b %Y %H:%M:%S") >>> 'Fri, 06 Feb 2015 17:45:09' |
我想要以毫秒为单位的时间。获得它们的一个简单方法:
1 2 3 4 5 6 7 8 9 10 | 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 |
但我只需要毫秒,对吧?获得它们的捷径:
1 2 3 4 | import time time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 1000) # 11:34:23.751 |
从最后一次乘法中添加或删除零来调整小数点的个数,或者:
1 2 | def get_time_str(decimal_points=3): return time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 10**decimal_points) |
1 2 3 4 | >>> import datetime, time >>> time = strftime("%H:%M:%S:%MS", time.localtime()) >>> print time '00:20:58:20S' |
这个问题不需要一个新的答案,只是为了它…然而,一个闪亮的新玩具/模块就足够了。那就是钟摆库,它似乎做了绿箭侠想做的事情,除了没有绿箭侠身上固有的缺陷和bug。
例如,最初问题的答案:
1 2 3 4 5 | >>> 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和ISOs,需要担心。把它们混在一起;不用担心,看一下
当我们说本地的时候,是什么意思呢?我的意思是:
1 2 3 | >>> print(pendulum.now().timezone_name) Australia/Melbourne >>> |
想必你们大多数人指的是其他地方。
然后继续。长话短说:钟摆尝试像请求处理HTTP那样处理日期和时间。它值得考虑,尤其是因为它的易用性和广泛的文档。
如果你只想要ms中的当前时间戳(例如,测量执行时间),你也可以使用"timeit"模块:
1 2 3 4 5 | 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)) |
1 2 3 | import datetime date_time = str(datetime.datetime.now()).split() date,time = date_time |
日期将打印日期,时间将打印时间。
你可以使用这个函数来获取时间(不幸的是它没有显示AM或PM):
1 2 3 | def gettime(): from datetime import datetime return ((str(datetime.now())).split(' ')[1]).split('.')[0] |
要获得小时、分钟、秒和毫秒以便以后合并,可以使用以下函数:
小时:
1 2 3 | def gethour(): from datetime import datetime return return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[0] |
分钟:
1 2 3 | def getminute(): from datetime import datetime return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[1] |
第二:
1 2 3 | def getsecond(): from datetime import datetime return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[2] |
毫秒:
1 2 3 | def getmillisecond(): from datetime import datetime return return (str(datetime.now())).split('.')[1] |
因为还没有人提起过,这是我最近碰到的……pytz时区的fromutc()方法与datetime的utcnow()相结合,是我发现的在任何时区获得有用的当前时间(和日期)的最佳方法。
1 2 3 4 5 6 7 8 9 | from datetime import datetime import pytz JST = pytz.timezone("Asia/Tokyo") local_time = JST.fromutc(datetime.utcnow()) |
如果你想要的只是时间,你可以用
下面是我不用格式化就能得到时间的方法。有些人不喜欢分割方法,但它在这里很有用:
1 2 | from time import ctime print ctime().split()[3] |
它将打印HH:MM:SS格式。
1 2 3 4 5 6 7 8 9 10 11 12 | from time import ctime // Day {Mon,Tue,..} print ctime().split()[0] // Month {Jan, Feb,..} print ctime().split()[1] // Date {1,2,..} print ctime().split()[2] // HH:MM:SS print ctime().split()[3] // Year {2018,..} print ctime().split()[4] |
当您调用ctime()时,它将以"Day Month Date HH:MM:SS Year"(例如:"Wed January 17 16:53:22 2018")的格式将秒转换为字符串(默认delimeter为space)(例如:"Wed"、"Jan"、"17"、"16:56:45"、"2018")。
方括号用于"选择"列表中需要的参数。
应该只调用一行代码。人们不应该像我这样调用它们,这只是一个例子,因为在某些情况下,你会得到不同的值,罕见但不是不可能的情况。
首先从datetime导入datetime模块
1 | from datetime import datetime |
然后将当前时间打印为'yyyy-mm-dd hh:mm:ss'
1 | print(str(datetime.now()) |
要以"hh:mm:ss"的形式获得时间,其中ss表示秒数加上经过的秒数,只需执行以下操作;
1 | print(str(datetime.now()[11:]) |
将date .now()转换为字符串会得到一个答案,其格式与我们习惯的常规日期和时间类似。
这很简单。试一试:
1 2 3 4 | import datetime date_time = str(datetime.datetime.now()) date = date_time.split()[0] time = date_time.split()[1] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | get current date time attributes: 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 |