Datetime bieżący rok i miesiąc w Pythonie


90

Muszę mieć bieżący rok i miesiąc w datetime.

Używam tego:

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

Czy jest może inny sposób?


masz na myśli date.today().strftime("%Y-%m")?
00schneider

Odpowiedzi:


114

Posługiwać się:

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

Zakładam, że chcesz pierwszego dnia miesiąca.


1
@ user3778327: todayzmienna ma już bieżący rok i miesiąc.
jfs

18
W przypadku tego rozwiązania użyj from datetime import datetimezamiast prostegoimport datetime
jpobst

@jpobst Używam Pythona 3.8.1 i datetime-4.3 zope.interface-4.7.1, a powyższy kod (z importem datetime ) działa dla mnie. Jeśli piszę z importu datetime datetime , wyrzuca mi AttributeError: obiekt typu „datetime.datetime” nie ma atrybutu „datetime”
jeppoo1

127

Wypróbuj to rozwiązanie:

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
Działa, dzięki! Czy istnieje przewaga, .now()a nie .today()w przypadku innych odpowiedzi? now()Funkcja jest krótszy, to powszechnie stosowane ... ale czy istnieje jakikolwiek powód, aby użyć jednej nad drugą, gdy wszystko chce wiedzieć, co roku to jest?
Luc

1
@hashlash Thanks! Aby zaoszczędzić innym kliknięciem: nie, nie bardzo
Luc

co robi from datetimei dlaczego tego potrzebujesz?
Cadoiz

1
@Cadoiz - Pakiet datetime ma kilka podmodułów - datesubmoduł ( from datetime import date), który zajmuje się tylko datami, timepodmoduł, który zajmuje się czasami, oraz datetimepodmoduł o niestety nazwie, który robi jedno i drugie. Jest też timedeltai tzinfotam. Można by po prostu import datetimepobrać cały pakiet ze wszystkimi podmodułami, ale wtedy wywołania metod wyglądałyby tak, jak datetime.datetime.now()lub datetime.date.today(). Zwykle z kilku powodów ładniej jest importować tylko potrzebne komponenty.
dannysauer

68

Posługiwać się:

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

Odniesienie: 8.1.7. Zachowanie strftime () i strptime ()

Odniesienie: zachowanie strftime () i strptime ()

Powyższe rzeczy są przydatne przy każdym analizowaniu dat, nie tylko teraz i dzisiaj. Może być przydatna w przypadku dowolnej analizy dat.

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

I tak dalej...



6

Zawsze możesz użyć metody podciągów:

import datetime;

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

Spowoduje to wyświetlenie bieżącego miesiąca i roku w formacie liczb całkowitych. Jeśli chcesz, aby były to łańcuchy, musisz po prostu usunąć pierwszeństwo „int” podczas przypisywania wartości do zmiennych curr_yeari curr_month.


5
To jest złe. Dlaczego trzeba go rzucać, a potem robić manipulacje na strunach? datetime.datetime.now().monthjest lepiej.
Ahmed

5

Późna odpowiedź, ale możesz też użyć:

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

1
Późno, ale nie źle, a nawet jasne niż przy użyciu daty i godziny. Dzięki :).
ivanleoncz

4
>>> from datetime import date
>>> date.today().month
2
>>> date.today().year
2020
>>> date.today().day
13
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.