Как получить текущее время в python и разбить на год, месяц, день, час, минуту?


Я хотел бы получить текущее время в Python и назначить их в переменные типа year,month,day,hour,minute. Как это можно сделать в Python 2.7?

10 142

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 ответ выше намного чище, но вы можете сделать это с оригинальным 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]

вот один лайнер, который входит чуть ниже линии 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)
import time
year = time.strftime("%Y") # or "%y"

три библиотеки для доступа и управления датами и временем, а именно 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

вы можете использовать модуль datetime для получения текущей даты и времени в Python 2.7

import datetime
print datetime.datetime.now()

выход :

2015-05-06 14:44:14.369392