сколько дней между датами python

Python: Получить количество дней между датами

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

Python: Получить количество дней между датами

Вступление

Создание объекта Datetime

Поскольку datetime-это встроенный модуль, вы можете получить к нему доступ сразу же, импортировав его в верхнюю часть вашего файла Python.

Вы можете создавать объекты datetime несколькими различными способами:

Получить Количество дней между датами в Python

Попытка измерить количество дней между датами без использования модуля datetime является обманчиво сложной задачей – между учетом високосных лет и количеством дней в каждом месяце пытаться создать свою собственную реализацию бессмысленно.

Однако с датой и временем это становится тривиальным.

Вы можете просто вычесть a date или datetime друг из друга, чтобы получить количество дней между ними:

Печать этого объекта вернет дни, часы, минуты, секунды и микросекунды к этому событию:

Затем мы можем просто получить доступ к параметру days этого объекта, чтобы получить количество дней между ними. Это приводит к:

Добавление и Вычитание дней С помощью TimeDelta

Что, если вместо того, чтобы пытаться вычесть две известные даты друг из друга, вы хотите добавить или вычесть временные рамки? Например, клиент подписался на вашу услугу за ежемесячную плату. Вы захотите напомнить им, чтобы они продлили его через 30 дней.

Вы можете построить временные рамки для этих 30 дней, используя timedelta и добавить или вычесть их из любого другого объекта datetime :

Это невероятно полезная функция при попытке реализовать планирование или извлечение записей базы данных на основе движущегося окна (например, трейлинг-30 дней).

Вывод

В этом уроке мы рассмотрели все, что вам нужно знать о получении количества дней между двумя датами в Python.

Мы работали с объектами datetime и timedelta для достижения этой функциональности.

Источник

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

сколько дней между датами python. Смотреть фото сколько дней между датами python. Смотреть картинку сколько дней между датами python. Картинка про сколько дней между датами python. Фото сколько дней между датами python

сколько дней между датами python. Смотреть фото сколько дней между датами python. Смотреть картинку сколько дней между датами python. Картинка про сколько дней между датами python. Фото сколько дней между датами python

Python содержит несколько инструментов, которые разработчик может использовать для работы с датой и временем. В данном разделе статье мы рассмотрим модули datetime и time. Мы изучим принципы их работы и способы их применения. Начнем с модуля 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м годом. В любом случае, в данном разделе мы ознакомимся со следующими функциями:

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вернет вот такой результат:

Timedelta

Все аргументы опциональные и их значения по умолчанию равно 0. Они могут быть целыми или числами с плавающей точкой, как положительными, так и отрицательными. Благодаря этому можно выполнять математические операции, такие как сложение, вычитание и умножение.

Как вычислить разницу для двух дат

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

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

Таким образом между 2 и 30 октября 2020 года 28 дней.

Как вычислить разницу двух объектов datetime.time

Такой код вернет следующую ошибку:

Как получать прошлые и будущие даты с помощью timedelta

Поскольку timedelta — это длительность, то для получения прошлой или будущей даты нужно добавить объект timedelta к существующему или вычесть из него же. Вот пример нескольких уравнений, где n — это целое число, представляющее количество дней:

Если нужно, например, получить дату за прошлые две недели, то достаточно вычесть 14 дней из текущей даты:

Предположим, вы задумали практиковать определенный навык в течение 21 дня. Для получения будущей даты нужно добавить 21 день к текущей дате:

Другие арифметические операции с timedelta

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

Часовые пояса

Пока что мы работали с datetime без учета часовых поясов и летнего времени. Но прежде чем переходить к следующим пунктам, нужно разобраться с разницей в абсолютных (naive) и относительных (aware) датах.

Абсолютные даты не содержат информацию, которая бы могла определить часовой пояс или летнее время. Однако с такими намного проще работать.

Относительные же содержат достаточно информации для определения часового пояса или отслеживания изменений из-за летнего времени.

Разница между DST, GMT и UTC

Как работать с часовыми поясами

Рассмотрим, как создать простой относительный объект datetime :

Предположим, нужно получить текущее время для Найроби. Для этого нужно использовать конкретный часовой пояс. Для начала можно с помощью pytz получить все существующие часовые пояса.

Вот некоторые из них:

Для получения времени в Найроби:

А вот так можно получить время Берлина:

Здесь можно увидеть разницу в часовых поясах разных городов, хотя сама дата одна и та же.

Конвертация часовых поясов

При конвертации часовых поясов в первую очередь нужно помнить о том, что все атрибуты представлены в UTC. Допустим, нужно конвертировать это значение в America/New_York :

Другие практические примеры

Всегда храните даты в UTC. Вот примеры:

Как конвертировать строки в datetime

strptime() в Python — это метод из модуля datetime. Вот его синтаксис:

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

Источник

Numpy DateTime: Как работать с датами и временем в Python?

Полное учебное пособие np.dateTime64. Все, что вам нужно знать, чтобы начать …

В этой статье мы узнаем о чем-то, что буквально везде. Какой бы угол вы поворачиваетесь, какая бы улица вы бежали, вы не можете уйти от него. Это как повсеместно, как физическое пространство вокруг нас. Да сегодня мы говорим о … время. Более конкретно, мы говорим о Функции Numpy, которые представляют даты и времена Отказ

Упражнение : Создайте объекты Numpy DateTime от вашего дня рождения! Теперь рассчитайте количество дней, которые прошли с тех пор.

Когда я впервые услышал о Numpy’s datetime Библиотека, я не думал, что это было большое дело. Почему нам нужны специальные функции, чтобы иметь дело с датами? Они довольно просты, не можем просто использовать строки, такие как ‘2019/01/01’ И сделать с этим?

Ну, молодая версия меня, оказывается, они довольно сложны, и мы не можем «просто использовать строки» …

Если вы не уверены, попробуйте ответить на любой из следующих вопросов, используя «просто строки»:

Очевидно, нам нужны даты и времена, чтобы иметь свои собственные функции. И не волнуйтесь, мы ответим на все эти вопросы к концу статьи.

Вы хотите стать Numpy Master? Проверьте нашу интерактивную книгу головоломки Coffe Break Numpy И повысить свои навыки науки о данных! (Ссылка Amazon открывается на новой вкладке.)

Нежное введение

Хотя мы не можем «просто использовать Строки «Представлять даты и времена, мы будем использовать строки в качестве ввода к основной функции, с которой мы будем работать: np.dateTime64 () Отказ

Примечание : то 64 означает, что цифры 64 бита.

Numpy использует сокращения следующих (здравых смыслов) для единиц времени, обратите внимание на капитализацию, где это происходит:

ГодыY
МесяцыM
НеделиW
ДниD
Часыh
Минутm
Секундыs
МиллисекундыРС
Microconds (поскольку μs (греческая буква «MU») так, как мы передаем ее, и «U» выглядит ближе всего к этому на английском языке).нас

Формат ввода – ISO 8601

Разные страны пишут своими даты по-разному. В Европе 06/10/18 – 6 октября, а в Америке 10 июня. Лично, это может быть раздражает, но в бизнесе, это критично (представьте, что ваша программа работает до 6 октября, когда вы хотели, чтобы она остановилась 10 июня)! Итак, нам нужен стандартизированный вход для наших функций. К счастью, глобальный стандарт уже существует ISO 8601 Отказ

Это легко вспомнить, как даты и времена идут налево, направо от большого до маленького. Это будет важно позже, когда мы сделаем арифметику с datetime объекты.

Чтобы ввести это на Numpy, мы можем либо

Я предпочитаю первый метод, так как легче читать. Но обратите внимание, что если вы распечатаете любой np.dateTime64 Функции, Numpy всегда вставляют T Отказ

Теперь пришло время для наших первых примеров (я пытался выбрать даты, которые легко читать для обучения).

Рекантралирование

Учитывая конкретное значение dateTime, вы можете изменить его в определенный момент времени, введя его в качестве второго параметра.

Например, скажем, у нас есть определенный день, но только хочу месяц:

Обратите внимание, что часть DD для HOURE_FROM_MONH и HOURE_FROM_DAY разные. Первый имеет 01 и последний 22. Это потому, что numpy возвращается к значениям по умолчанию, если никто не указан. Это логически, 01 для M и D и 0 для переменных времени.

Арифметика DateTime

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

Что наступает дальше после 12 вечера 12 декабря 1999 года?

В зависимости от единицы времени вы рассчитываете, это может быть что-нибудь:

Как мы уже видели, каждый np.dateTime64 Объект имеет единицу времени, связанный с ним. Поэтому, если мы ‘+ 5’ на наш объект «день», мы пойдем вперед 5 дней. И если мы ‘- 5’ с нашего месяца объекта, мы пойдем назад 5 месяцев:

Но что, если мы хотим посмотреть на Рождественский день каждый год за последние 50 лет? Мы не можем начать с 2018-12-25 и «- 1», потому что это прилагает временную единицу «D», и поэтому дает нам 2018-12-24.

Numpy решил эту проблему, введя другую функцию с помощью прохладной фамилии: np.timedelta64 Отказ

np.timedelta64.

Любая арифметика, которая сложнее, чем добавление или вычитание целые числа включает в себя np.timedelta64 Отказ Уравнение либо вернет np.timedelta64 объект или вам нужно будет использовать один, чтобы получить результат.

Если вы все поняли до этого момента, вы легко поймете это. Это лучше всего объяснено в примерах.

Количество дней с 1 января 2013 года и 1 января 2012 года 366, так как это был скачок года.

Каждый np.timedelta64 () Объект принимает одно целое и однократное устройство. Таким образом, чтобы добавить через 4 месяца и 3 дня, у вас есть два варианта.

Первый – использовать два экземпляра np.timedelta64 :

Второе – преобразовать отдельный np.timedelta64 объекты в один с использованием разделения (или модуло):

Обратите внимание, что в месяц, так и год не являются определенной длиной. Таким образом, вы не можете преобразовать их в другие, меньшие единицы.

Большинство людей согласились бы, что через месяц после 31 января 28 февраля. Но что через месяц после 28 февраля? 28 марта или 31 марта? Так что numpy бросает ошибку, если вы попытаетесь изменить месяц/год np.dateTime64 объект со временным устройством ‘D’ или меньше.

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

Мы теперь оснащены, чтобы построить список любых дат и времена нашего сердца! Итак, давайте построим один, содержащий все рождественские дни за последние 50 лет. Мы начнем с последних декабря. 2018-12 и повторяйте через него 50 раз назад. Для первой итерации мы вычвеем один год (чтобы получить 2017 год), для второго мы вычитаем 2 года (чтобы получить 2016 год) и так далее. Наконец, в каждой итерации мы добавляем 24 дня (поскольку день по умолчанию 01). Мы сделаем все это, используя один из наиболее любимых аспектов Python: понимание списка!

Теперь мы знаем ответы на вопросы 1 и 2, которые я спросил в начале.

Но как насчет вопроса 3? Это было о рабочих днях, поэтому давайте узнаем о них сейчас.

Сколько рабочих дней между двумя днями?

Мы можем создать любой список данных DateTimes, используя инструменты выше. Но есть несколько вещей, которые мы можем использовать, чтобы упростить нашу жизнь.

Предприятия обычно заботятся только о том, что происходит в своих дни операции. Поэтому было бы неплохо иметь набор функций для решения этого. Было бы много ненужных точек данных, если бы нам пришлось включить субботу и воскресенье в анализе данных на акции.

К счастью, Numpy обрабатывает это, используя концепцию рабочих дней с np.busday () функция.

Но во-первых, нам нужно покрыть всеобъемлющую концепцию.

Недели

Центральная к этим функциям является ключевым словом «Weekmass». Эта переменная определяет, какие дни считаются рабочими днями.

Следующие еженедельники все установили рабочие дни в понедельник, вторник, среду, четверг и пятницу (поведение по умолчанию):

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

Примечание: вход в np.busday Функции не строка, а скорее np.dateTime64 () объект.

np.is_busday ()

Возвращает логическое значение: Правда Если день это рабочий день, Ложь Если это не так.

Примечание. Вы можете использовать эту функциональность для создания списков любого определенного дня. Просто установите Weekmask в интересные дни и используйте np.is_busday (), чтобы выбрать соответствующие.

np.busday_count ()

Возвращает количество рабочих дней между двумя датами, которые вы предоставляете.

Теперь мы можем ответить на вопрос 3:

np.busday_offset ()

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

Мы будем использовать это, чтобы найти ближайший рабочий день для любой даты, которую мы передаем к этой функции.

Например, мы хотим найти цену фондового рынка 18 мая 2019 года. Это невозможно, так как это в субботу, а фондовый рынок закрыт. Мы будем использовать эту функцию, чтобы получить np.dateTime64 объект ближе всего к нему это рабочий день.

Для простоты мы проигнорируем более сложные случаи использования. Пожалуйста, обратитесь к Документация Если вы хотите более подробные объяснения.

np.dateTime64 с np.arange.

Последнее, что мы посмотрим на создание даты, даже проще сочетают его с функцией NP.Arge.

Помните, что аргументы для NP.Arge почти идентичны встроенному Диапазон () функция. Но есть добавленная ‘dtype’ Аргумент ключевых слов, чья по умолчанию нет. Как ассортимент, остановка в NP.Arange является эксклюзивным и поэтому не включена в расчет.

Хотите понять функцию Numpy Arange () один раз и для всех? Читайте моего руководства в блоге: Окончательное руководство по NP.Arge () с видео.

При работе с DateTimes вы должны включить дату начала и остановки и установить DTYPE.

И это все, что вам нужно знать о DateTimes в Numpy! Феве, это было много.

Чтобы проложить его, давайте визуализируем фондовый рынок США за последнее десятилетие, используя разные временные интервалы.

Как визуализировать фондовый рынок с DateTime Numpy?

Для следующего примера я скачал последние 10 лет данных фондового рынка для S & P 500 Отказ Вы можете свободно загружать его здесь Отказ

Я проделал предварительную обработку от этой статьи и завершился двумя списками. Первый, Значения, Содержит значение индекса S & P 500 в закрытии каждый день с 2009-10-23 до 2019-10-22. Второй, datetimes содержит np.dateTime64 объекты на каждый день.

Я зацикливаю эти списки вместе, чтобы создать словарь, где каждый ключ является датой и каждым значением значение S & P 500. Мы будем использовать это для создания подмножеств наших данных позже, только выбрав ключи, которые мы хотим.

Участок 1 – все данные

Во всем наборе данных наблюдается огромная тенденция. Но график довольно шумный. Можно увидеть другие тенденции, но потому что есть так много очков, это не особенно приятно смотреть. Что делать, если мы повторно выбирали, чтобы увидеть, как рынок исполнился год на год? Для этого мы посмотрим на 1 января каждый год.

Участок 2 – 1 янв

Примечание: 1 ян Ян – это праздник каждый год, и поэтому фондовый рынок не открыт. Итак, мы будем использовать np.busday_offset () Чтобы выбрать ближайшую действительную дату для нас.

Во-первых, создайте список каждый год, используя NP.Arge ().

Так как значения datetimes У единицы времени «D» мы должны преобразовать даты в All_years к этому тоже. По умолчанию по умолчанию каждый элемент к yyyy-01-01.

Теперь мы замышляем.

Это гораздо более гладкий сюжет, и очень легко понять, что годы имели положительный и отрицательный рост. Такова сила ретора!

Но этот граф слишком общий? Чтобы получить хорошую среднюю позицию, давайте посмотрим на стоимость S & P 500 в начале каждые квартал за последние 10 лет. Процесс практически идентичен тому, которое мы использовали выше.

Участок 3 – Каждый квартал

Во-первых, создайте список каждого квартала в виде YYYY-MM. Помните четверти 3 месяца!

Переосмысление наших объектов DateTime для «D» с использованием понимания списка.

Теперь мы замышляем

Это дает нам прекрасный обзор тенденций фондового рынка. Это не слишком шумно (как сюжет 1) или чрезмерно упрощенный (например, сюжет 2). Внутрилетние провалы ясны, пока график все еще легко понятен.

И именно это! Все, что вам нужно знать, чтобы использовать NP.DATETETIME64 и связанные с ними функции, а также некоторые реальные примеры мира.

Если у вас есть какие-либо вопросы или предложения, пожалуйста, используйте окно комментариев ниже. Мы любим услышать отзывы и предложения!

Атрибуция

Эта статья способна предоставлена пользователем Finxter Адам Мерфи (данные ученый):

Я являюсь самоучками программистом с первой степенью класса в математике из Университета Дарема и кодировал с июня 2019 года.

Я хорошо разбираюсь в основах SUB STRACKING и DATA SCAIL и может получить широкий спектр информации из Web очень быстро.

Недавно я счел информацию обо всех часах, которые Breitling и Rolex продают всего за 48 часов и уверены в себе, я могу доставить наборы данных подобного качества для вас, независимо от ваших потребностей.

Будучи собственным английским языком, мои навыки общения отлично, и я доступен, чтобы ответить на любые вопросы, которые вы имеете, и предоставим регулярные обновления о прогрессе моей работы.

Куда пойти отсюда?

Тщательное понимание Numpy Basics является важной частью образования каких-либо данных ученых. Numpy находится в основе многих передовых машин обучения и научных библиотек данных, таких как Pandas, Tensorflow и Scikit-Suart.

Если вы боретесь с Numpy Library – не бойся нет! Станьте Numpy Professional в кратчайшие сроки с нашим новым учебником кодирования «Coffe Break Numpy». Это не только тщательное введение в Numpy Library, которая повысит вашу ценность на рынке. Также весело пройти большую коллекцию кода головоломки в книге.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *