Как получить день недели с датой в Python
Как получить день недели с датой в Python

Как получить день недели с датой в Python

Как мне получить день недели, учитывая дату в Python?

Я хочу узнать следующее: учитывая дату ( datetime object), каков соответствующий день недели.

например, воскресенье-это первый день, понедельник: второй день.. и так далее

а затем, если вход что-то вроде сегодняшней даты.

пример

выход может быть 6 (поскольку пятница)

20 ответов:

использовать weekday() ( docs):

из документации:

возвращает день недели в виде целого числа, где понедельник равен 0, а воскресенье-6.

Если вы хотите иметь дату на английском языке:

решение без импорта для дат после 1700/1/1

это решение, если дата является объектом datetime.

библиотека datetime иногда дает ошибки с strptime () поэтому я переключился на библиотеку dateutil. Вот пример того, как вы можете использовать его :

вывод, который вы получаете от этого ‘Mon’ . Если вы хотите, чтобы вывод был «понедельник», используйте следующее:

это работает для меня довольно быстро. У меня возникли проблемы при использовании библиотеки datetime, потому что я хотел сохранить имя дня недели вместо номера дня недели и формат от использования datetime библиотека вызывала проблемы. Если у вас нет проблем с этим, отлично! Если да, то вы можете эффективно пойти на это, поскольку он также имеет более простой синтаксис. Надеюсь, это поможет.

предполагая, что вам дан день, месяц и год, вы можете сделать:

если вы не только полагаетесь на datetime модуль calendar может быть лучшей альтернативой. Это, например, предоставит вам коды дня:

и это даст вам тот день:

или в стиле python, как один лайнер:

Если у вас есть причины избегать использования модуля datetime, то эта функция будет работать.

Примечание: предполагается, что переход от юлианского к григорианскому календарю произошел в 1582 году. Если это не относится к интересующему вас календарю, измените строку если год > 1582: соответственно.

чтобы получить воскресенье как 1 Через субботу как 7, это самое простое решение вашего вопроса:

всего из них:

выход:

Использование Модуля Canlendar

вот как преобразовать список дат в дату

#задание №6
#Напишите функцию output(year), которая для заданного
#года year (тип int) возвращает чего было больше воскресений
#или сред в этом году. Функция должна выдавать: 0 — если было
#больше воскресений; 1 — если больше сред; 2 — если количество
#воскресений такое же, как и количество сред.
def output(year): #начало функции output
import datetime
s=0;
leapyear=0;
ans = datetime.date(year, 1, 1).strftime(«%a»)
print(‘######отладочная информация######’)
print(‘первый день недели’,ans)
#определяем колво дней нужных до среды
if (ans == «Mon») : s = 2 #Пон
elif (ans == «Tue») : s = 1 #Втор
elif (ans == «Wed») : s = 0 #Среда
elif (ans == «Thu») : s = 6
elif (ans == «Fri») : s = 5
elif (ans == «Sub») : s = 4
elif (ans == «Sun») : s = 3
print (‘до среды осталось’,s,’дней’)
#определяем колводней нужных до воскресенья
if (ans == «Mon») : z = 6 #Пон
elif (ans == «Tue») : z = 5 #Втор
elif (ans == «Wed») : z = 4 #Сред
elif (ans == «Thu») : z = 3
elif (ans == «Fri») : z = 2
elif (ans == «Sub») : z = 1
elif (ans == «Sun») : z = 0 #Воскресенье
print (‘до воскресенья осталось’,z,’дней’)
#Определяем високостный год
if (year % 4 == 0) : leapyear=366 #366 дней
else: leapyear=365 #365 дней
print (‘всего дней в году ‘,leapyear)
print (‘сред ‘, (leapyear-s)//7) #делим на 7 а дробное число отбрасываем
print (‘воскр ‘,(leapyear-z)//7)
print(‘#################################’)
#считаем и выводим итог
if (((leapyear-z) // 7) > ((leapyear-s)//7)) : print (‘результат 0’) #делим на 7 (это промежуток между повтором дня недели) а дробное число отбрасываем далее сравниваем больше ли воскресений
elif (((leapyear-z) // 7) 0 —>

#план такой: определяем первое число года первого месяца падает на какой день
#недели отсчитываем сколько дней нужно ждать до среды и отдельно до воскресенья
#далее выяснив сколько дней в году у нас есть минусуем их прожданными днями до
#первой среды и получившийся остаток дней так как мы на первой среде делим на
#промежуток в семь дней до следующей среды и выясняем сколько этих сред таким
#образом будет а дробный остаток выкидываем команда посчитать без остатка сразу
#это // например 366 // 7 = итог целое колво дней без кусочков но это если первый
#день сразу нужный попадется правда а теперь тоже самое дело для воскресений
#сколько до перв. воскр. прождали вычтеным из нашего запаса дней оставшихся
#до конца года пока ждали этого воскр. и делим узнаем колво воскресений в году
#так между ними всегда 7 дней же промежуток кажись. Теперь воплощаем план

Источник



Как использовать модуль datetime в Python

Содержание

  1. Как получить текущие дату и время?
  2. Получить текущую дату в Python
  3. Получить текущее время
  4. Компоненты datetime в Python
  5. Как создавать объекты даты и времени
  6. Timedelta
  7. Как вычислить разницу для двух дат
  8. Как вычислить разницу двух объектов datetime.time
  9. Как получать прошлые и будущие даты с помощью timedelta
  10. Другие арифметические операции с timedelta
  11. Часовые пояса
  12. Разница между DST, GMT и UTC
  13. Как работать с часовыми поясами
  14. Конвертация часовых поясов
  15. Другие практические примеры
  16. Как конвертировать строки в datetime
  17. Примеры конвертации строки в объект datetime с помощью strptime
  18. Практические примеры
  19. Как конвертировать объект datetime в строку
  20. Примеры конвертации datetime в строку с помощью strftime()
  21. Как получить строковое представление даты и времени с помощью функции format()
  22. Другие datetime-библиотеки в Python
  23. Arrow
  24. Maya
  25. Dateutil
  26. Важные нюансы
  27. Выводы
  28. Обучение Python и Data Science
Читайте также:  Предложения со словосочетанием laquo последние т плые деньки raquo

Datetime — важный элемент любой программы, написанной на Python. Этот модуль позволяет управлять датами и временем, представляя их в таком виде, в котором пользователи смогут их понимать.

datetime включает различные компоненты. Так, он состоит из объектов следующих типов:

  • date — хранит дату
  • time — хранит время
  • datetime — хранит дату и время

Как получить текущие дату и время?

С помощью модуля Python это сделать очень просто. Сначала нужно импортировать класс datetime из модуля datetime , после чего создать объект datetime . Модуль предоставляет метод now() , который возвращает текущие дату и время с учетом локальных настроек.

А вот результат:

Получить текущую дату в Python

Класс date можно использовать для получения или изменения объектов даты. Например, для получения текущей с учетом настроек подойдет следующее:

Текущая дата — 2020-11-14 в формате год-месяц-день соответственно.

Получить текущее время

Для получения текущего локального времени сперва нужно получить текущие дату и время, а затем достать из этого объекта только время с помощью метода time() :

Компоненты datetime в Python

Модуль datetime в Python может использоваться для получения разных версий времени. Для этого нужно ознакомиться с атрибутами модуля. Используем для этого функцию dir() .

В этом руководстве речь пойдет о следующих элементах:

  • date — объекты даты
  • datetime — объекты даты и времени
  • time — объекты времени
  • timedelta — этот атрибут покрывает интервалы и используется для определения прошлых или будущих событий
  • Tzinfo — этот атрибут отвечает за часовые пояса

Как создавать объекты даты и времени

Для создания объекта времени используется класс time из модуля datetime в Python. Синтаксис следующий: datetime.time(hour, minutes, seconds) .

В этом примере создается объект времени представленный следующим образом (8, 48, 45).

Сначала импортируется модуль datetime . После этого создается экземпляр класса (объект time ). Затем ему присваивается значение datetime.time(8, 48, 45) , где параметры 8, 48 и 45 представляют собой часы, минуты и секунды соответственно.

Для создания объекта даты нужно передать дату с использованием следующего синтаксиса:

Источник

Как получить день недели с датой в Python?

Я хочу узнать следующее: учитывая дату ( datetime object), что такое соответствующий день недели.

например, воскресенье-это первый день, понедельник: второй день.. и так далее

а затем, если вход что-то вроде сегодняшней даты.

пример

выход может быть 6 (поскольку пятница)

16 ответов

возвращает день недели как целое число, где 0-это понедельник и воскресенье-6.

Если вы хотите иметь дату на английском языке:

решение без импорта для дат после 1700/1/1

Я решил это для codechef вопрос.

Это решение, если дата является объектом datetime.

datetime library иногда дает ошибки с strptime (), поэтому я переключился на библиотеку dateutil. Вот пример того, как вы можете его использовать :

вывод, что вы получаете от этого ‘Mon’ . Если вы хотите выводить как «понедельник», используйте следующее :

это работает для меня довольно быстро. У меня возникли проблемы при использовании библиотеки datetime, потому что я хотел сохранить имя дня недели вместо номера дня недели и формат от использования datetime библиотека вызывала проблемы. Если у тебя нет проблем с этим, отлично! Если вы, вы можете эффективно пойти на это, так как он имеет более простой синтаксис. Надеюсь, это поможет.

предполагая, что вам дан день, месяц и год, вы можете сделать:

если вы не полагаетесь исключительно на datetime модуль calendar может быть лучшей альтернативой. Это, например, предоставит вам коды дня:

и это даст вам тот день:

или в стиле python, как один лайнер:

Если у вас есть причины избегать использования модуля datetime, то эта функция будет работать.

Примечание: предполагается, что переход от юлианского к григорианскому календарю произошел в 1582 году. Если это неверно для интересующего вас календаря, измените строку если год > 1582: соответственно.

Источник

Datetime в Python — работа со временем и датой

Работа с датой и временем в модуле Python datetime

Для работы с датой и временем в Python 2 и 3 есть отдельный модуль datetime. В отличие от других языков, таких как SQL, в Python нет встроенного типа данных для работы с датой и временем — это достигается путем импорта модуля и созданием объекта. Модуль datetime входит в пакет Python и его не нужно отдельно устанавливать.

Импорт модуля осуществляется следующим путем:

Навигация по посту

  • Получение текущей даты и времени
  • Форматирование и перевод в строку
    • Получения дня недели и название месяца
  • Создание объекта даты и времени
    • Создание из строк
  • Продолжительность времени с timedelta
    • Разница между датами
  • Изменение объектов
  • Сравнение и условия
  • Работа с метками (штампами) timestamp
  • Работа с часовыми поясами и tzinfo
Читайте также:  Склонение существительных множественного числа

Получение текущей даты и времени

Для вывода даты и времени нужно выполнить следующее:

Получение текущей даты и времени в Python datetime

Как видно мы получаем для создания объекта даты и времени используется класс с тем же именем что и модуль datetime.

Когда нужно получить только дату используется класс date:

Получение текущей даты в Python datetime

Получение только времени выполняется через метод time():

Получение времени в Python datetime

Каждый из описываемых классов можно импортировать следующим способом:

Импорт модуля datetime в Python

Форматирование и перевод в строку

Для получение части даты или времени можно использовать следующие атрибуты:

  • year
  • month
  • day
  • weekday
  • hour
  • minute
  • second

Форматирование строки с датой в Python datetime

Так же есть метод strftime, который форматирует даты в нужном формате в строку. Например так мы получим дату в формате, который используется у нас:

Форматирование в datetime Python

  • %d — день месяца с 1 по 31;
  • %m — месяц с 1 по 12;
  • %Y — год;
  • %H — час в формате 0-24;
  • %M — минуты;
  • %S — секунды.

Таким же способом можно получить время и дату:

  • %c — время и дата;
  • %x — дата;
  • %X — время.

Форматирование в datetime Python

Обратите внимание, что таким способом мы преобразуем объект класса datetime в строку и мы больше не сможем использовать методы по работе с датой (например сравнение):

Типы дат в datetime Python

Мы получим ошибку так как уже работаем со строкой:

  • AttributeError: ‘str’ object has no attribute ‘day’

Выше описаны основные возможности форматирования используя метод strftime(), но их, конечно, больше.

Получения дня недели и название месяца

Можно получить название дня недели или название. Численный вариант эквивалентен следующим значениям:

  • 0 — Monday (Понедельник);
  • 1 — Tuesday (Вторник);
  • 2 — Wednesday (Среда);
  • 3 — Thursday (Четверг);
  • 4 — Friday (Пятница);
  • 5 — Saturday (Суббота);
  • 6 — Sunday (Воскресенье).

Следующий пример вернет день недели в виде числа:

Получение дня недели в Python datetime

Или получить название:

  • %A — полное название дня недели;
  • %a — сокращенное название дня недели;
  • %s — представление в виде числа.

Такой же принцип по работе с месяцами, где:

  • %B — полное название месяца;
  • %b — сокращенное название месяца;
  • %m — месяц в виде числа.

Создание объекта даты и времени

Для создания даты используется класс с аргументами date(год, месяц, число):

Создание объекта с даты в Python datetime

Можно создать дату и время. В обоих случаях мы можем использовать именованные аргументы если так удобнее:

Создание объекта с датой и временем в Python datetime

Каждый аргумент времени, по умолчанию, имеет значение 0. Мы так же можем использовать подход выше для получения, например, только года или времени:

Именованные аргумента в datetime Python

Если вы не укажете год, месяц или день, то получите ошибку т.к. они по умолчанию равны None:

  • TypeError: Required argument ‘year’ (pos 1) not found

Есть отдельный класс для создания времени time:

Создание объекта времени в datetime Python

Создание из строк

Используя strptime() можно создавать объект datetime из строки:

Создание даты из строки с datetime strptime Python

Продолжительность времени с timedelta

timedelta — это класс с помощью которого можно установить не дату, как в примерах выше, а продолжительность. Так мы создадим объект с 12 днями и 33 секундами:

Продолжительность с timedelta в Python datetime

Все атрибуты, которые мы можем указывать для этого класса:

  • days
  • seconds
  • microseconds
  • milliseconds
  • minutes
  • hours

Кроме этого мы можем преобразовывать эти объекты в секунды:

Получение секунд в datetime Python

Разница между датами

Мы можем искать разницу между датами получая объект timedelta:

Разница между датами в Python datetime

Изменение объектов

Каждый их объектов выше можно изменить. Так мы изменим объект timedelta прибавив часы к минутам:

Изменение времени в Python datetime

С помощью timedelta изменяется и дата. Пример ниже изменяет текущую дату прибавляя к ней 1 день и 1 час:

Добавление дней в Python datetime

Сравнение и условия

Каких либо хитростей в сравнении объектов нет. В следующем примере идет сравнение двух дат с разницей в день:

Сравнение объектов datetime в Python

При этом стоит проверять, что объекты относятся к классу datetime, а не являются строками. В следующем примере мы сравниваем года, но они уже относятся к численным:

Сравнение годов в Python datetime

Объект timedelta тоже можно сравнивать:

Сравнение timedelta в Python datetime

Работа с метками (штампами) timestamp

При работе с API или в Unix системах мы можем увидеть отображение времени в таком формате:

Данные числа обозначают количество секунд с 1 января 1970 года. Мы можем конвертировать данное число в понятный формат используя datetime:

Работа с UNIX timestamp Python datetime

Так же сработает если мы хотим получить и время:

Получение даты и времени из timestamp в Python datetime

Для конвертирования в timestamp используется метод с аналогичным названием:

Создание timestamp в Python datetime

Работа с часовыми поясами

К сожалению у меня нет большого опыта работы с часовыми поясами и примеры ниже не стоит рассматривать как лучшие практики.

Библиотека datetime не хранит часовые пояса, данные о переводах часов (летнее и зимнее время) и високосных секундах. К тому же, некоторые страны, могут изменить время опираясь на локальные ситуации. Эти ситуации опасны, когда идет запись в базу данных. Для вывода в GUI, можно использовать datetime.datetime.now() или высчитывать часовой пояс из базы.

Для записи в базу данных мы можем использовать время UTC и отдельно считать часовой пояс:

Читайте также:  Поздравления с днем рождения добрые пожелания

Время UTC в Python Datetime

Следующий пример вычислит разницу времени между UTC и локальным. Насколько я знаю он может не сработать на версиях Python

Источник

Работа с датой и временем в Python

Python содержит несколько инструментов, которые разработчик может использовать для работы с датой и временем. В данном разделе статье мы рассмотрим модули datetime и time. Мы изучим принципы их работы и способы их применения. Начнем с модуля datetime.

Модуль datetime

Мы изучим следующие классы модуля:

  • datetime.date
  • datetime.timedelta
  • datetime.datetime

Благодаря этим классам мы в будущем сможем работать с большей частью случаев, в которых нам понадобятся объекты date и datetime. Также существует класс tzinfo, который применяется для работы с часовыми поясами. Для дополнительной информации об этом классе вы можете обратиться к документации Python.

datetime.date

Python может представлять даты различными способами. Для начала, рассмотрим формат datetime.date, так как это один из самых простых объектов date.

В данном коде показано, как создать простой объект даты. Класс date принимает три аргумента: год, месяц и день. Если вы укажите неправильное значение, вы увидите ошибку ValueError, как в случае выше. В противном случае вы увидите, что объект datetime.date вернулся. Давайте взглянем на еще один пример:

Здесь мы присваиваем объекту date переменную d. Теперь мы можем получить доступ к различным компонентам даты по названиям, таким как d.year или d.month. Давайте посмотрим, какой сейчас день:

Это может быть полезно, когда вам нужно записать, какой сейчас день. Или, если вам нужно выполнить основанный на сегодняшней дате расчет. Мелочь, а приятно.

datetime.datetime

Объект datetime.datetime содержит всю информацию объектов datetime.date плюс datetime.time. Давайте приведем несколько примеров, для лучшего понимания разницы между этим объектом, и объектом datetime.date.

Мы видим, что datetime.datetime принимает несколько дополнительных аргументов: год, месяц, день, час, минута и секунда. Это также позволяет вам указывать информацию о микросекундах и часовом поясе. При работе с базами данных, данные типы объектов будут использоваться достаточно часто. Большую часть вашей работы, вам нужно будет конвертировать форматы date или datetime Python в форматы SQL datetime или timestamp. Обратите внимание на то, что today совместно с datetime.datetime использует два разных метода:

Модуль datetime содержит другой метод, под названием strftime. Этот метод позволяет разработчику создавать строку, отображающую время в более понятной для человека форме. Существует целая таблица параметров форматирования, с которой рекомендуется ознакомиться в документации Python, в секции 8.1.7. Давайте взглянем на несколько примеров, показывающих всю полезность данного метода:

Первый пример – это скорее хитрость. В нем показано, как конвертировать сегодняшний объект datetime в строку, следующую за форматом YYYYMMDD (ГГГГММДД). Второй пример более наглядный.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

В нем мы присваиваем объект datetime переменной под названием today и применяем два разных параметра форматирования строки. Первый параметр добавляет косые черточки между элементами datetime, а также перегруппировывает datetime, теперь он делится на месяц, день и год. В последнем примере мы создаем временную отметку, которая следует типичному формату: YYYY-MM-DD.HH.MM.SS. Если вам нужно указать год как двухзначный (“YY”), вы можете заменить %Y на %y.

datetime.timedelta

Объект datetime.timedelta отображает длительность времени. Другими словами, это разница между двумя датами или временными отметками. Давайте взглянем на наглядный пример:

Мы создали два объекта datetime. Один указывает на сегодняшний день, второй – на прошедшую неделю. После этого, мы берем разницу между ними. Это возвращает объект timedelta, который мы можем далее использовать, чтобы выяснить, сколько прошло дней или секунд, между этими двумя датами. Если вам нужно узнать количество часов или минут между двумя датами, вам понадобится немножко математики, чтобы выяснить это. Давайте взглянем на проверенный способ:

Отсюда мы узнаем, что в неделе 186 часов и 13 минут. Обратите внимание на то, что мы используем двойную косую черту в качестве нашего оператора деления, также известного как floor division. Теперь мы готовы к тому, чтобы узнать больше о модуле time Python.

Модуль time

Модуль time открывает разработчику Python доступ к нескольким связанным со временем функциям. Модуль основан на «эпохе», точке, с которой начинается время. Для систем Unix, эпоха началась в 1970 году. Чтобы узнать, какая эпоха в вашей системе, попробуйте запустить следующий код:

Я запустил его на Windows 7, которая также уверена в том, что начало времен датируется 1970м годом. В любом случае, в данном разделе мы ознакомимся со следующими функциями:

Источник