Date et heure de l'année et du mois en cours en Python

90

Je dois avoir l'année et le mois en cours dans datetime.

J'utilise ceci:

datem = datetime.today().strftime("%Y-%m")
datem = datetime.strptime(datem, "%Y-%m")

Y a-t-il peut-être un autre moyen?

utilisateur3778327
la source
voulez-vous dire date.today().strftime("%Y-%m")?
00schneider

Réponses:

114

Utilisation:

from datetime import datetime
today = datetime.today()
datem = datetime(today.year, today.month, 1)

Je suppose que vous voulez le premier du mois.

llogiq
la source
1
@ user3778327: la todayvariable a déjà l'année et le mois en cours.
jfs
18
Pour cette solution, assurez-vous d'utiliser from datetime import datetimeplutôt que simplementimport datetime
jpobst
@jpobst J'utilise Python 3.8.1 & datetime-4.3 zope.interface-4.7.1, et le code ci-dessus (avec import datetime ) fonctionne pour moi. Si j'écris à partir de datetime import datetime , cela me lance AttributeError: l'objet de type 'datetime.datetime' n'a pas d'attribut 'datetime'
jeppoo1
127

Essayez cette solution:

from datetime import datetime

currentSecond= datetime.now().second
currentMinute = datetime.now().minute
currentHour = datetime.now().hour

currentDay = datetime.now().day
currentMonth = datetime.now().month
currentYear = datetime.now().year
Gaurav Dave
la source
1
Fonctionne, merci! Y at - il un avantage sur .now()plutôt que .today()tel qu'il est utilisé dans d' autres réponses? La now()fonction est plus courte, elle est plus couramment utilisée ... mais y a-t-il une raison d'utiliser l'une sur l'autre alors que tout ce que l'on veut savoir c'est de quelle année il s'agit?
Luc
1
@hashlash Merci! Pour sauver les autres un clic: non, pas vraiment
Luc
que fait from datetime-on et pourquoi en avez-vous besoin?
Cadoiz le
1
@Cadoiz - Le paquet datetime a quelques sous-modules - le datesous - module ( from datetime import date) qui ne traite que des dates, le timesous - module qui traite des heures, et le datetimesous - module malheureusement nommé qui fait les deux. Il y a aussi timedeltaet tzinfolà-dedans. On pourrait simplement import datetimeobtenir le package complet avec tous les sous-modules, mais alors les appels de méthode ressembleraient à datetime.datetime.now()ou datetime.date.today(). En règle générale, il est préférable pour plusieurs raisons d'importer uniquement les composants dont vous avez besoin.
dannysauer
68

Utilisation:

from datetime import datetime

current_month = datetime.now().strftime('%m') // 02 //This is 0 padded
current_month_text = datetime.now().strftime('%h') // Feb
current_month_text = datetime.now().strftime('%B') // February

current_day = datetime.now().strftime('%d')   // 23 //This is also padded
current_day_text = datetime.now().strftime('%a')  // Fri
current_day_full_text = datetime.now().strftime('%A')  // Friday

current_weekday_day_of_today = datetime.now().strftime('%w') //5  Where 0 is Sunday and 6 is Saturday.

current_year_full = datetime.now().strftime('%Y')  // 2018
current_year_short = datetime.now().strftime('%y')  // 18 without century

current_second= datetime.now().strftime('%S') //53
current_minute = datetime.now().strftime('%M') //38
current_hour = datetime.now().strftime('%H') //16 like 4pm
current_hour = datetime.now().strftime('%I') // 04 pm

current_hour_am_pm = datetime.now().strftime('%p') // 4 pm

current_microseconds = datetime.now().strftime('%f') // 623596 Rarely we need.

current_timzone = datetime.now().strftime('%Z') // UTC, EST, CST etc. (empty string if the object is naive).

Référence: 8.1.7. Comportement de strftime () et strptime ()

Référence: comportement de strftime () et strptime ()

Les éléments ci-dessus sont utiles pour toute analyse de date, pas seulement maintenant ou aujourd'hui. Cela peut être utile pour toute analyse de date.

e.g.
my_date = "23-02-2018 00:00:00"

datetime.strptime(str(my_date),'%d-%m-%Y %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S+00:00')

datetime.strptime(str(my_date),'%d-%m-%Y %H:%M:%S').strftime('%m')

Etc...

Anup Yadav
la source
6

Vous pouvez toujours utiliser une méthode de sous-chaîne:

import datetime;

today = str(datetime.date.today());
curr_year = int(today[:4]);
curr_month = int(today[5:7]);

Cela vous donnera le mois et l'année en cours au format entier. Si vous voulez qu'elles soient des chaînes, vous devez simplement supprimer la priorité "int" lors de l'affectation de valeurs aux variables curr_yearet curr_month.

Jaymeen_JK
la source
5
C'est mauvais. Pourquoi avoir besoin de le lancer puis de faire une manipulation de chaîne? datetime.datetime.now().monthest mieux.
Ahmed
5

Réponse tardive, mais vous pouvez également utiliser:

import time
ym = time.strftime("%Y-%m")
Pedro Lobito
la source
1
Tard, mais pas faux, et même clair que l'utilisation de datetime. Merci :).
ivanleoncz
4
>>> from datetime import date
>>> date.today().month
2
>>> date.today().year
2020
>>> date.today().day
13
sanfirat
la source