Je suis curieux de manipuler le temps en python. Je peux obtenir l'âge (dernier modifié) d'un fichier à l'aide de la fonction J'ai besoin d'exécuter une sorte de Testez pour voir si cette période est dans les trois derniers mois ou non, mais je suis parfaitement confondu par toutes les options de temps disponibles à Python. P> Peut-on offrir une idée? Cordialement. P> p> os.path.gemtime () code> comme tel:
8 Réponses :
1 jour = 24 heures = 86400 secondes. Puis 3 mois sont environ 90 jours, ce qui correspond à 90 * 86400 secondes. Vous pouvez utiliser ces informations pour ajouter / soustraire du temps. Ou vous pouvez essayer le python DateTime module pour date Maths. (surtout chronomelta) p>
time.time() - os.path.getmtime(oldLoc) > (3 * 30 * 24 * 60 * 60)
... C'est un peu une approximation de "mois" :-)
Votre réponse est la meilleure: D
Vous pouvez utiliser un peu d'arithmétique DateTime ici pour des raisons de clarté.
>>> import datetime
>>> today = datetime.datetime.today()
>>> modified_date = datetime.datetime.fromtimestamp(os.path.getmtime('yourfile'))
>>> duration = today - modified_date
>>> duration.days > 90 # approximation again. there is no direct support for months.
True
Au lieu de Durée.days Code> Je dirais Durée.Total_seconds () / (24 * 60 * 60) Code> Il est donc plus précis - .days code > Tirez simplement le nombre de jours de tronquer efficacement de sorte que 1 jour 12 heures devient 1 jour et conduit à des erreurs inattendues par une erreur.
Si vous devez avoir le nombre exact de jours, vous pouvez utiliser le module code> Calendrier Code> en conjonction avec DateTime, par exemple,
import calendar
import datetime
def total_number_of_days(number_of_months=3):
c = calendar.Calendar()
d = datetime.datetime.now()
total = 0
for offset in range(0, number_of_months):
current_month = d.month - offset
while current_month <= 0:
current_month = 12 + current_month
days_in_month = len( filter(lambda x: x != 0, c.itermonthdays(d.year, current_month)))
total = total + days_in_month
return total
Je cherchais quelque chose de similaire et je suis venu avec cette solution alternative:
Le problème de base ici est combien de jours constituent 3 mois ici. Votre réponse ne s'adresse pas.
J'utiliserais .betmtime () à la place () au cas où le fichier a été modifié puisqu'il a été créé.
Pour déterminer si un fichier est plus âgé de 3 mois calendaires, vous pouvez utiliser DateUtil.RelatiiveelTA code> :
from datetime import datetime, timedelta three_months_ago = datetime.now() - timedelta(days=90)
Ceci savoir si une date est de 3 mois de plus p>
de la date d'importation DateTime, timedelta
TIME_PERIOD = DATE.TODAY () - Date (2016, 8, 10)
Voici une solution générique utilisant Time Deltas:
from dateutil.relativedelta import relativedelta # pip install python-dateutil is_file_older_than(filename, relativedelta(months=3))
Quand vous dites "les trois derniers mois", que voulez-vous dire? Mois calendaires? 90 jours?
Si vous pouvez comprendre comment manipuler le temps en utilisant uniquement du code Python, je connais des physiciens qui aimeraient parler avec vous. ;RÉ
Connexes: Rechercher si 24 heures se sont passées entre DateTimes - Python