Datum / Uhrzeit aktuelles Jahr und Monat in Python

90

Ich muss das aktuelle Jahr und den aktuellen Monat in Datum / Uhrzeit haben.

Ich benutze das:

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

Gibt es vielleicht einen anderen Weg?

user3778327
quelle
meinst du date.today().strftime("%Y-%m")?
00schneider

Antworten:

114

Verwenden:

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

Ich nehme an, Sie wollen den ersten des Monats.

llogiq
quelle
1
@ user3778327: todayVariable hat bereits das aktuelle Jahr und den aktuellen Monat.
JFS
18
Verwenden Sie für diese Lösung from datetime import datetimenicht einfachimport datetime
jpobst
@jpobst Ich verwende Python 3.8.1 & datetime-4.3 zope.interface-4.7.1, und der obige Code (mit import datetime ) funktioniert für mich. Wenn ich von datetime importiere datetime , wird mir AttributeError ausgegeben: Typ Objekt 'datetime.datetime' hat kein Attribut 'datetime'
jeppoo1
128

Versuchen Sie diese Lösung:

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
quelle
1
Funktioniert, danke! Gibt es einen Vorteil gegenüber .now()nicht .today()wie in anderen Antworten verwendet? Die now()Funktion ist kürzer, wird häufiger verwendet ... aber gibt es einen Grund, sie übereinander zu verwenden, wenn man nur wissen möchte, welches Jahr es ist?
Luc
1
@ Hashlash Danke! Um anderen einen Klick zu ersparen: Nein, nicht wirklich
Luc
Was macht from datetimeund warum brauchst du es?
Cadoiz
1
@Cadoiz - Das datetime-Paket enthält einige Submodule - das dateSubmodul ( from datetime import date), das sich nur mit Datumsangaben befasst, das timeSubmodul, das sich mit Zeiten befasst, und das leider benannte datetimeSubmodul, das beides ausführt. Es gibt auch timedeltaund tzinfodort. Man könnte einfach import datetimedas ganze Paket mit allen Submodulen bekommen, aber dann würden Methodenaufrufe wie datetime.datetime.now()oder aussehen datetime.date.today(). In der Regel ist es aus mehreren Gründen besser, nur die Komponenten zu importieren, die Sie benötigen.
Dannysauer
68

Verwenden:

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).

Referenz: 8.1.7. strftime () und strptime () Verhalten

Referenz: strftime () und strptime () Verhalten

Die oben genannten Dinge sind nützlich für jede Datumsanalyse, nicht nur jetzt oder heute. Es kann für jede Datumsanalyse nützlich sein.

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')

Und so weiter...

Anup Yadav
quelle
8

Sie können die akzeptierte Antwort als Einzeiler schreiben, indem Sie date.replace:

datem = datetime.today().replace(day=1)
Verrückter Physiker
quelle
6

Sie können immer eine Sub-String-Methode verwenden:

import datetime;

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

Dadurch erhalten Sie den aktuellen Monat und das aktuelle Jahr im Ganzzahlformat. Wenn Sie möchten, dass es sich um Zeichenfolgen handelt, müssen Sie lediglich die Priorität "int" entfernen, während Sie den Variablen curr_yearund Werte zuweisen curr_month.

Jaymeen_JK
quelle
5
Das ist schlecht. Warum muss es gegossen werden, um dann eine String-Manipulation durchzuführen? datetime.datetime.now().monthist besser.
Ahmed
5
>>> from datetime import date
>>> date.today().month
2
>>> date.today().year
2020
>>> date.today().day
13
Sanfirat
quelle
5

Späte Antwort, aber Sie können auch verwenden:

import time
ym = time.strftime("%Y-%m")
Pedro Lobito
quelle
1
Spät, aber nicht falsch und sogar klar als datetime. Vielen Dank :).
ivanleoncz