Как ввести дату с клавиатуры python

Обновлено: 29.04.2024

В этой статье вы научитесь управлять датой и временем в Python с помощью примеров.

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

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

Простая программа с помощью которой можно получить текущую дату и время в Python:

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

Здесь мы импортировали модуль datetime, используя оператор import datetime.

Один из классов, определенных в модуле datetime, ‒ это класс datetime. Затем мы использовали метод now() для создания объекта datetime, содержащего текущие локальные дату и время.

Как получить текущую дату?

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

В этой программе мы использовали метод today(), определенный в классе даты, чтобы получить объект даты, содержащий текущую локальную дату.

Что внутри datetime?

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

Когда вы запустите программу, вывод будет:

Обычно используемые классы в модуле datetime:

  • дата класса;
  • класс времени;
  • datetime класс;
  • класс timedelta.

Класс datetime.date

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

Объект Date для представления даты

Когда вы запустите программу, вывод будет:

В приведенном выше примере date() является конструктором класса даты. Конструктор принимает три аргумента: год, месяц и день.

Переменная a ‒ объект даты.

Мы можем импортировать только класс даты из модуля datetime. Вот как:

Пример: Получить текущую дату

Вы можете создать объект даты, содержащий текущую дату, используя метод класса с именем today(). Вот как:

Пример: Вывести сегодняшний год, месяц и день

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

datetime.time

Объект времени, созданный из класса времени, представляет местное время.

Объект времени для представления времени

Вывод часа, минуты, секунды и микросекунды

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

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

datetime.datetime

В модуле datetime есть класс с именем dateclass, который может содержать информацию как из объектов даты, так и времени.

Объект datetime

Когда вы запустите программу, вывод будет:

Первые три аргумента год, месяц и день в конструкторе datetime() являются обязательными.

Напечатать год, месяц, час, минуту и отметку времени

datetime.timedelta

Объект timedelta представляет разницу между двумя датами или временем.

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

Разница между двумя объектами timedelta

Здесь мы создали два объекта timedelta t1 и t2 , и их разница отображается на экране.

Печать отрицательного объекта timedelta

Продолжительность времени в секундах

Вы можете получить общее количество секунд в объекте timedelta, используя метод total_seconds().

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

Дата и время в формате Python

Дата и время могут быть разными в разных местах, организациях и т.д. в США чаще используется мм/дд/гггг, а в Великобритании ‒ дд/мм/гггг.

Для этого в Python есть методы strftime() и strptime().

Метод strftime() ‒ объект datetime для строки

Метод определяется в классах date, datetime и time. Метод создает форматированную строку из заданного объекта даты, даты, времени или времени.

Форматирование даты с помощью strftime()

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

Здесь % Y,% m,% d,% H и т.д. являются кодами формата. Метод strftime() принимает один или несколько кодов формата и возвращает на его основе отформатированную строку.

В приведенной выше программе t s1 и s2 -‒ это строки:

Python strptime() ‒ строка для даты и времени

Метод создает объект datetime из заданной строки (представляющей дату и время).

strptime()

Метод принимает два аргумента:

  1. Строка, представляющая дату и время.
  2. Код формата, эквивалентный первому аргументу.

Кстати, коды формата% d,% B и% Y используются для дня, месяца (полное имя) и года соответственно.

Обработка часового пояса

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

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

Здесь datetime_NY и datetime_London ‒ это объекты, содержащие текущую дату и время соответствующего часового пояса.

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

В стандартной библиотеке Python 3 есть встроенная функция input() (в Python 2 это raw_input() ), которая отвечает за прием пользовательского ввода. Разберемся, как она работает.

Чтение ввода с клавиатуры

Функция input([prompt]) отвечает за ввод данных из потока ввода:

  1. При вызове функции input() выполнение программы приостанавливается до тех пор, пока пользователь не введет текст на клавиатуре (приложение может ждать бесконечно долго).
  2. После нажатия на Enter , функция input() считывает данные и передает их приложению (символ завершения новой строки не учитывается).
  3. Полученные данные присваиваются переменной и используются дальше в программе.

input() всегда возвращает строку :

Также у input есть необязательный параметр prompt – это подсказка пользователю перед вводом:

name = input("Введите имя: ") print(f"Привет, !") > Введите имя: Вася > Привет, Вася!

📃 Более подробное описание функции из документации:

def input([prompt]): """ Read a string from standard input. The trailing newline is stripped. The prompt string, if given, is printed to standard output without a trailing newline before reading input. If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError. On *nix systems, readline is used if available. """ pass

Преобразование вводимые данные

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

☝️ Важно : если вы решили преобразовать строку в число, но при этом ввели строку (например: test), возникнет ошибка:

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

def get_room_number(): while True: try: num = int(input("Введите номер комнаты: ")) return num except ValueError: print("Вы ввели не число. Повторите ввод") room_number = get_room_number() print(f"Комната успешно забронирована!") > Введите номер комнаты: test > Вы ввели не число. Повторите ввод > Введите номер комнаты: 13 > Комната 13 успешно забронирована!

Input() → int

Для преобразования в целое число используйте функцию int() . В качестве аргумента передаются данные которые нужно преобразовать, а на выходе получаем целое число:

То же самое можно сделать в одну строку: age = int(input("Введите ваш возраст: ")) .

Input() → float

Если нужно получить число с плавающей точкой (не целое), то его можно получить с помощью функции float() .

Input() → list (список)

Если в программу вводится информация, которая разделяется пробелами, например, "1 word meow", то ее легко преобразовать в список с помощью метода split() . Он разбивает введенные строки по пробелам и создает список:

💭 Обратите внимание, что каждый элемент списка является строкой. Для преобразования в число, можно использовать int() и цикл for. Например, так:

Ввод в несколько переменных

Если необходимо заполнить одним вводом с клавиатуры сразу несколько переменных, воспользуйтесь распаковкой:

В этом примере строка из input() разбивается по пробелу функцией split() . Далее применяется синтаксис распаковки – каждый элемент списка попадает в соответствующую переменную.

Все переменные после распаковки будут строкового типа. Преобразовать их (например в int) можно так:

☝️ Важно : не забывайте обрабатывать ошибки:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Форматирование строки с датой в 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

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

Выше описаны основные возможности форматирования используя метод 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:

Есть отдельный класс для создания времени 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 < 3.3:

Разница во времени UTC Python datetime

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


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 году. Чтобы узнать, какая эпоха в вашей системе, попробуйте запустить следующий код:

time . struct_time ( tm_year = 1970 , tm_mon = 1 , tm_mday = 1 , tm_hour = 0 , tm_min = 0 , tm_sec = \

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

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

Классы datetime в Python подразделяются на 5 основных классов.


Бесплатный курс «Python. Быстрый старт»

Получите курс и узнайте, как создать программу для перевода текстов на Python

tzinfo— абстрактный класс для работы с часовыми поясами

В этом руководстве мы рассмотрим:

Как использовать классы Date и DateTime

Вывод даты с использованием date.today()

Текущая дата и время в Python: now() today()

Как отформатировать дату и время с помощью Strftime()

Как использовать Объекты Timedelta

Как использовать классы Date и DateTime

Шаг 1) Прежде чем запускать код для datetime, важно импортировать модули date time, как показано на скриншоте ниже.


Эти операторы импорта являются предопределенными частями функционала в библиотеке Python, которые позволяют вам манипулировать датами и временем без написания какого-либо кода. Рассмотрим следующее перед выполнением кода даты и времени:

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

Шаг 2) Далее мы создаем экземпляр объекта даты.


Шаг 3) Далее мы выводим дату и запускаем код.


Вывод соответствует ожидаемому.

Вывод даты с использованием date.today()

Функция date.today имеет несколько свойств, связанных с ней. Мы можем вывести отдельно день / месяц / год и многое другое. Давайте рассмотрим пример:


Сегодняшний номер дня недели

Функция date.today() также дает номер дня недели. Вот таблица рабочих дней, которая начинается с понедельника 0 и заканчивается воскресеньем 6.

Номер дня недели полезен для массивов, индекс которых зависит от дня недели.


Текущая дата и время в Python: now() today()

Шаг 1) Как и объекты Date, мы также можем использовать в Python объекты «DATETIME» . Он выдает дату вместе со временем в часах, минутах, секундах и миллисекундах.


Когда мы выполняем код для datetime, он выдает выходные данные с текущей датой и временем.

Шаг 2) С помощью «объекта DATETIME» вы также можете вызвать класс time.

Предположим, мы хотим вывести только текущее время без даты.

Мы импортировали класс time. Мы присваиваем ему текущее значение времени, используя datetime.now(). Мы присваиваем значение текущего времени переменной t. И это даст нам только время. Итак, давайте запустим эту программу.


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

Шаг 3) Мы применим индексатор дня недели к массиву дней недели, чтобы узнать, какой сегодня день.


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

days = [ "monday" , "tuesday" , "wednesday" , "thursday" , "friday" , "saturday" , "sunday" ]

Как отформатировать дату и время с помощью Strftime()

На данный момент мы узнали, как использовать в Python объекты datetime и date. Теперь мы узнаем, как использовать функцию форматирования времени и даты.

Шаг 1) Сначала мы рассмотрим, как отформатировать год. Вот пример:


Мы использовали для форматирования «функцию strftime».

Эта функция использует другой управляющий код для вывода.

Каждый управляющий код указывает различные параметры, такие как год, месяц, день недели и дата [(%y/%Y – Year), (%a/%A- weekday), (%b/%B- month), (%d - day of month)].

В нашем случае это («%Y»), который указывает год, он выводим полный год с веком (например, 2018).



Бесплатный курс «Python. Быстрый старт»

Получите курс и узнайте, как создать программу для перевода текстов на Python

Шаг 3) Функция Strf может объявлять отдельно дату, день, месяц и год. Также с небольшими изменениями в управляющем коде функции strftime вы можете отформатировать стиль текста.



Шаг 4) С помощью функции «Strftime» мы также можем получить локальное системное время, дату или и то, и другое.


В результате вы можете увидеть вывод, как и ожидалось.

Шаг 5) Функция strftime позволяет вам вызывать время в формате 24 часа или 12 часов.


Просто определив управляющий код, %I/H для часов, %M для минут, %S для секунд, можно вызвать время в разных форматах.

Время 12 часов объявляется, как [print now.strftime("%I:%M:%S %P)].

24 часа объявляется, как [print now.strftime("%H:%M")].

Вот полный код для преобразования datetime в объект String.

Как использовать Объекты Timedelta

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

Помните, что эта функция предназначена не для вывода времени или даты, а для того, чтобы ВЫПОЛНЯТЬ РАСЧЕТЫ в будущем или прошлом. Давайте рассмотрим пример.

Шаг 1) Чтобы запустить Объект Timedelta, вам нужно сначала объявить оператор импорта, а затем выполнить код:


Указываем оператор импорта для timedelta

Теперь указываем код для вывода объекта из timedelta, как показано на снимке экрана

Запустите код. Timedelta представляет промежуток 365 дней, 8 часов и 15 минут и выводит то же самое

Смешение? Об этом в следующем шаге.

Шаг 2) Давайте получим текущие дату и время, чтобы проверить, как работает наш оператор импорта. Когда код выполняется, он выводим сегодняшнюю дату, что означает, что наш оператор импорта работает хорошо.


Шаг 3) Посмотрим, как мы можем получить дату через год с помощью Объекта Timedelta. Когда мы запускаем код, он выдает результат, как и ожидалось.


Шаг 4) Еще один пример того, как Timedelta может использоваться для расчета будущей даты из текущей даты и времени.


Шаг 5) Давайте рассмотрим более сложный пример. Я хотел бы определить, сколько дней прошло в новом году. Вот как мы будем действовать.

Читайте также: