如何在Python中获取当前时间并分解为年、月、日、小时、分钟?

458

我想在Python中获取当前时间,并将其分配给诸如yearmonthdayhourminute的变量。这该如何在Python 2.7中实现?


1
https://dev59.com/UnI95IYBdhLWcg3wyBCc#2158454 - sharpshadow
可能是重复的问题:如何在Python中获取当前时间 - Kevin J. Chase
10个回答

793

datetime 模块是您的好友:

import datetime
now = datetime.datetime.now()
print(now.year, now.month, now.day, now.hour, now.minute, now.second)
# 2015 5 6 8 53 40

您不需要单独的变量,返回的datetime对象上的属性包含您所需的所有内容。


11
一个补充:import time \n now=time.localtime() \n print now.tm_year, now.tm_mon, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec, now.tm_wday, now.tm_yday, now.tm_isdst (注意:原文中 now.tm_hour 被重复写了一次,上述翻译已经进行了修正)该代码片段使用 Python 中的 time 模块来获取当前时间,并以年、月、日、时、分、秒、星期几、当年的第几天和夏令时标志等形式输出。 - Sean.H

56
这是一个只有不到80个字符的单行代码。
import time
yr, month, day, hr, minute = map(int, time.strftime("%Y %m %d %H %M").split())

1
你可能想使用 mnminute 代替 min,以防以后需要使用内置的 min() 函数。 - nigh_anxiety

41

datetime的答案由tzaman提供,更为简洁。但您也可以使用原始的Python time模块来完成:

import time
strings = time.strftime("%Y,%m,%d,%H,%M,%S")
t = strings.split(',')
numbers = [ int(x) for x in t ]
print numbers

输出:

[2016, 3, 11, 8, 29, 47]

15
通过解包datetime对象的timetuple,您应该得到想要的内容:
from datetime import datetime

n = datetime.now()
t = n.timetuple()
y, m, d, h, min, sec, wd, yd, i = t

4
注意:你正在复写内置函数“min”。 - Armster

13

让我们看看如何从当前时间中获取并打印Python中的日,月和年:

import datetime

now = datetime.datetime.now()
year = '{:02d}'.format(now.year)
month = '{:02d}'.format(now.month)
day = '{:02d}'.format(now.day)
hour = '{:02d}'.format(now.hour)
minute = '{:02d}'.format(now.minute)
day_month_year = '{}-{}-{}'.format(year, month, day)

print('day_month_year: ' + day_month_year)

结果:

day_month_year: 2019-03-26

10

适用于Python 3

import datetime
now = datetime.datetime.now()
print(now.year, now.month, now.day, now.hour, now.minute, now.second)

5
import time
year = time.strftime("%Y") # or "%y"

5
您可以使用 gmtime 函数。
from time import gmtime

detailed_time = gmtime() 
#returns a struct_time object for current time

year = detailed_time.tm_year
month = detailed_time.tm_mon
day = detailed_time.tm_mday
hour = detailed_time.tm_hour
minute = detailed_time.tm_min

注意:可以向gmtime传递时间戳,默认为由time()返回的当前时间。
eg.
gmtime(1521174681)

请参阅 struct_time


2

这是一个比较老的问题,但我想出了一个解决方案,希望对其他人有所帮助。

def get_current_datetime_as_dict():
n = datetime.now()
t = n.timetuple()
field_names = ["year",
               "month",
               "day",
               "hour",
               "min",
               "sec",
               "weekday",
               "md",
               "yd"]
return dict(zip(field_names, t))

timetuple()可以与另一个数组一起压缩,这将创建带标签的元组。将其转换为字典,结果产品可使用get_current_datetime_as_dict()['year']进行消费。

这比此处的其他解决方案多了一点开销,但我发现在代码中为了清晰起见能够访问命名值是非常好的。


2

有三个用于访问和操作日期和时间的库,分别是datetime、arrow和pendulum,它们都在命名元组中提供这些项,可以通过名称或索引访问其元素。此外,这些项可以以完全相同的方式访问。(我想如果我更聪明就不会感到惊讶了.)

>>> YEARS, MONTHS, DAYS, HOURS, MINUTES = range(5)
>>> import datetime
>>> import arrow
>>> import pendulum
>>> [datetime.datetime.now().timetuple()[i] for i in [YEARS, MONTHS, DAYS, HOURS, MINUTES]]
[2017, 6, 16, 19, 15]
>>> [arrow.now().timetuple()[i] for i in [YEARS, MONTHS, DAYS, HOURS, MINUTES]]
[2017, 6, 16, 19, 15]
>>> [pendulum.now().timetuple()[i] for i in [YEARS, MONTHS, DAYS, HOURS, MINUTES]]
[2017, 6, 16, 19, 16]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接