Как получить текущее время в python и разбить на год, месяц, день, час, минуту?
Я хотел бы получить текущее время в Python и назначить их в переменные типа year
,month
,day
,hour
,minute
. Как это можно сделать в Python 2.7?
10 ответов:
The
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
вам не нужны отдельные переменные, атрибуты на возвращенном
The
datetime
ответ выше намного чище, но вы можете сделать это с оригинальным pythontime
модуль: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]
вот один лайнер, который входит чуть ниже линии 80 символов макс.
import time year, month, day, hour, minute = time.strftime("%Y,%m,%d,%H,%M").split(',')
по распаковке
timetuple
объекта datetime, вы должны получить то, что вы хотите:from datetime import datetime n = datetime.now() t = n.timetuple() y, m, d, h, min, sec, wd, yd, i = t
для python 3
import datetime now = datetime.datetime.now() print(now.year, now.month, now.day, now.hour, now.minute, now.second)
три библиотеки для доступа и управления датами и временем, а именно datetime, стрелка и маятник, все делают эти элементы доступными в namedtuples, элементы которых доступны либо по имени, либо по индексу. Кроме того, элементы доступны точно таким же образом. (Наверное, если бы я был умнее, я бы не удивился.)
>>> 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]
это более старый вопрос, но я придумал решение, которое, как я думал, может понравиться другим.
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']
.это имеет немного больше накладных расходов, чем некоторые другие решения здесь, но я обнаружил, что так приятно иметь доступ к именованным значениям для clartiy в коде.
Вы можете использовать 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, значение по умолчанию текущее время как возвращается по времени ()
eg. gmtime(1521174681)
посмотреть struct_time