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?


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.


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

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



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.


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

5

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

import time
ym = time.strftime("%Y-%m")

1
Spät, aber nicht falsch und sogar klar als datetime. Vielen Dank :).
ivanleoncz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.