Извлекайте каждый год, месяц, день, год из getctime, getmtime в Python - PullRequest
0 голосов
/ 10 февраля 2020

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

import os, time, os.path, datetime

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

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

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

Ответы [ 4 ]

1 голос
/ 10 февраля 2020

Вы можете преобразовать строку в объект 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)))
0 голосов
/ 10 февраля 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 значения в соответствии с запросом.

0 голосов
/ 10 февраля 2020

Вы можете использовать модуль 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 году.

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

0 голосов
/ 10 февраля 2020
 time.ctime([secs])

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...