Извлечение каждого года, месяца, дня, года из getctime, getmtime в Python

Я хочу извлечь год, месяц, день, часы, мин, каждый раз из значения ниже.

import os, time, os.path, datetime

date_of_created = time.ctime(os.path.getctime(folderName))
date_of_modi = time.ctime(os.path.getmtime(folderName))

Теперь я могу получить только как «Четверг 26 декабря 19:21:37 2019», но я хочу получить значение отдельно 2019 // Дек (Могу ли я получить это как int ??) // 26 каждый

Я хочу извлекать каждый год, месяц, день, каждый раз, минимальное значение из date_of_created и date_of_modi. Могу ли я получить его? в питоне?

Всего 4 ответа


Вы можете преобразовать строку в объект datetime:

from datetime import datetime
date_of_created = datetime.strptime(time.ctime(os.path.getctime(folderName)), "%a %b %d %H:%M:%S %Y") # Convert string to date format
print("Date created year: {} , month: {} , day: {}".format(str(date_of_created.year),str(date_of_created.month),str(date_of_created.day)))

 time.ctime([secs])

Преобразуйте время, выраженное в секундах с начала эпохи, в строку вида: «Sun Jun 20 23:21:05 1993», представляющий местное время.

Если это не то, что вы хотите ... использовать что-то еще? time.getmtime вернет struct_time которая должна иметь соответствующие поля, или для более современного интерфейса использовать datetime.datetime.fromtimestamp который ... возвращает объект datetime из метки времени UNIX.

Кроме того, использование stat , вероятно, будет более эффективным, поскольку ctime и mtime, вероятно, будут выполнять каждый вызов stat внутри себя.


Вы можете использовать модуль datetime, точнее fromtimestamp() из модуля datetime, чтобы получить то, что вы ожидаете.

import os, time, os.path, datetime

date_of_created = datetime.datetime.fromtimestamp(os.path.getctime(my_repo))
date_of_modi = datetime.datetime.fromtimestamp(os.path.getmtime(my_repo))

print(date_of_created.strftime("%Y"))

Выход будет в 2020 для репо, созданного в 2020 году.

Все форматы доступны по этой ссылке


Функция time.ctime возвращает местное время в виде string . Возможно, вы захотите использовать функцию time.localtime , которая возвращает объект struct_time который содержит информацию, которую вы ищете. Как пример,

import os, time

date_created_string = time.ctime(os.path.getctime('/home/b-fg/Downloads'))
date_created_obj = time.localtime(os.path.getctime('/home/b-fg/Downloads'))
print(date_created_string) # Mon Feb 10 09:41:03 2020
print('Year: {:4d}'.format(date_created_obj.tm_year)) # Year: 2020
print('Month: {:2d}'.format(date_created_obj.tm_mon)) # Month:  2
print('Day: {:2d}'.format(date_created_obj.tm_mday)) # Day: 10

Обратите внимание, что это integer значения, как и было запрошено.


Есть идеи?

10000