Datetime поточного року та місяця в Python


90

У мене повинен бути поточний рік і місяць у даті-часу.

Я використовую це:

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

Чи є, можливо, інший спосіб?


ти маєш на увазі date.today().strftime("%Y-%m")?
00chneider

Відповіді:


114

Використання:

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

Я припускаю, що ви хочете першого числа місяця.


1
@ user3778327: todayзмінна вже має поточний рік та місяць.
jfs

18
Для цього рішення обов’язково скористайтеся, from datetime import datetimeа не простоimport datetime
jpobst

@jpobst Я використовую Python 3.8.1 & datetime-4.3 zope.interface-4.7.1, і наведений вище код (із імпортом datetime ) працює для мене. Якщо я пишу з дати-часу імпорту дати-часу , це видає мені AttributeError: тип об'єкта 'datetime.datetime' не має атрибута 'datetime'
jeppoo1

128

Спробуйте це рішення:

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
Працює, дякую! Чи є перевага перед, .now()а не .today()як використовується в інших відповідях? now()Функція коротше, вона частіше використовується ... , але немає ніяких підстав , щоб використовувати один над іншим , коли все один хоче знати, в якому році це?
Люк

1
@hashlash Дякую! Щоб врятувати інших, клацніть: ні, не дуже
Люк

що робить from datetimeі навіщо це потрібно?
Кадоїс,

1
@Cadoiz - Пакет datetime має кілька підмодулів - dateпідмодуль ( from datetime import date), який просто має справу з датами, timeпідмодуль, який має справу з часом, і на жаль названий datetimeпідмодуль, який виконує обидва. Там також timedeltaі tzinfoтам. Можна просто import datetimeотримати весь пакет з усіма підмодулями, але тоді виклики методів виглядатимуть як datetime.datetime.now()або datetime.date.today(). Як правило, з кількох причин приємніше імпортувати лише ті компоненти, які вам потрібні.
dannysauer

68

Використання:

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

Довідково: 8.1.7. поведінка strftime () та strptime ()

Посилання: поведінка strftime () та strptime ()

Вищезазначені речі корисні для будь-якого аналізу дати, не тільки зараз чи сьогодні. Це може бути корисно для розбору будь-якої дати.

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

І так далі...



6

Ви завжди можете використовувати метод підрядка:

import datetime;

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

Це дасть вам поточний місяць і рік у цілочисельному форматі. Якщо ви хочете, щоб вони були рядками, вам просто потрібно видалити пріоритет "int", призначаючи значення змінним curr_yearі curr_month.


5
Це погано. Навіщо це робити, а потім виконувати струнну маніпуляцію? datetime.datetime.now().monthкраще.
Ахмед


5

Пізня відповідь, але ви також можете використовувати:

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

1
Пізно, але не неправильно і навіть зрозуміло, ніж використання дати та часу. Дякую :).
ivanleoncz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.