Datetime текущий год и месяц в Python

90

У меня должен быть текущий год и месяц в datetime.

Я использую это:

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

А может быть другой способ?

user3778327
источник
ты имеешь в виду date.today().strftime("%Y-%m")?
00schneider,

Ответы:

114

Использование:

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

Я предполагаю, что вы хотите первого числа месяца.

llogiq
источник
1
@ user3778327: в todayпеременной уже есть текущий год и месяц.
jfs
18
Для этого решения используйте, from datetime import datetimeа не простоimport datetime
jpobst 05
@jpobst Я использую Python 3.8.1 и datetime-4.3 zope.interface-4.7.1, и приведенный выше код (с import datetime ) мне подходит . Если я пишу from datetime import datetime , мне
выдается
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(). Как правило, по нескольким причинам лучше импортировать только те компоненты, которые вам нужны.
даннысауэр
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.

Jaymeen_JK
источник
5
Это плохо. Зачем нужно преобразовывать его, а затем выполнять манипуляции со строкой? datetime.datetime.now().monthлучше.
Ахмед
5
>>> from datetime import date
>>> date.today().month
2
>>> date.today().year
2020
>>> date.today().day
13
Санфират
источник
5

Поздний ответ, но вы также можете использовать:

import time
ym = time.strftime("%Y-%m")
Педро Лобито
источник
1
Поздно, но не ошибочно и даже ясно, чем при использовании datetime. Благодарность :).
ivanleoncz