@ 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”
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 is0 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 0is Sunday and6is 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).
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.
date.today().strftime("%Y-%m")
?Odpowiedzi:
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.
źródło
today
zmienna ma już bieżący rok i miesiąc.from datetime import datetime
zamiast prostegoimport datetime
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
źródło
.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?from datetime
i dlaczego tego potrzebujesz?date
submoduł (from datetime import date
), który zajmuje się tylko datami,time
podmoduł, który zajmuje się czasami, orazdatetime
podmoduł o niestety nazwie, który robi jedno i drugie. Jest teżtimedelta
itzinfo
tam. Można by po prostuimport datetime
pobrać cały pakiet ze wszystkimi podmodułami, ale wtedy wywołania metod wyglądałyby tak, jakdatetime.datetime.now()
lubdatetime.date.today()
. Zwykle z kilku powodów ładniej jest importować tylko potrzebne komponenty.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...
źródło
Możesz napisać zaakceptowaną odpowiedź jako jednowierszową za pomocą
date.replace
:datem = datetime.today().replace(day=1)
źródło
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_year
icurr_month
.źródło
datetime.datetime.now().month
jest lepiej.Późna odpowiedź, ale możesz też użyć:
import time ym = time.strftime("%Y-%m")
źródło
>>> from datetime import date >>> date.today().month 2 >>> date.today().year 2020 >>> date.today().day 13
źródło