Python как форматировать время

Как управлять датой и временем в Python?

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

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

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

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

import datetime datetime_object = datetime.datetime.now() print(datetime_object)

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

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

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

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

import datetime date_object = datetime.date.today() print(date_object)

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

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

Что внутри datetime?

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

import datetime print(dir(datetime))

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

['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', 'datetime', 'datetime_CAPI', 'time', 'timedelta', 'timezone', 'tzinfo']

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

Класс datetime.date

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

Читайте также:  Multiple constructors in kotlin

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

import datetime d = datetime.date(2019, 4, 13) print(d)

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

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

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

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

from datetime import date a = date(2019, 4, 13) print(a)

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

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

from datetime import date today = date.today() print("Current date EnlighterJSRAW" data-enlighter-language="python">from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date EnlighterJSRAW" data-enlighter-language="python">Date = 2012-01-11

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

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

from datetime import date # date object of today's date today = date.today() print("Current year:", today.year) print("Current month:", today.month) print("Current day:", today.day)

datetime.time

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

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

from datetime import time # time(hour = 0, minute = 0, second = 0) a = time() print("a =", a) # time(hour, minute and second) b = time(11, 34, 56) print("b =", b) # time(hour, minute and second) c = time(hour = 11, minute = 34, second = 56) print("c =", c) # time(hour, minute, second, microsecond) d = time(11, 34, 56, 234566) print("d EnlighterJSRAW" data-enlighter-language="python">a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11:34:56.234566

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

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

from datetime import time a = time(11, 34, 56) print("hour =", a.hour) print("minute =", a.minute) print("second =", a.second) print("microsecond EnlighterJSRAW" data-enlighter-language="python">hour = 11 minute = 34 second = 56 microsecond = 0

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

datetime.datetime

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

Объект datetime

from datetime import datetime #datetime(year, month, day) a = datetime(2018, 11, 28) print(a) # datetime(year, month, day, hour, minute, second, microsecond) b = datetime(2017, 11, 28, 23, 55, 59, 342380) print(b)

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

2018-11-28 00:00:00 2017-11-28 23:55:59.342380

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

Читайте также:  Javascript stack trace console

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

from datetime import datetime a = datetime(2017, 11, 28, 23, 55, 59, 342380) print("year =", a.year) print("month =", a.month) print("hour =", a.hour) print("minute =", a.minute) print("timestamp EnlighterJSRAW" data-enlighter-language="python">year = 2017 month = 11 day = 28 hour = 23 minute = 55 timestamp = 1511913359.34238

datetime.timedelta

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

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

from datetime import datetime, date t1 = date(year = 2018, month = 7, day = 12) t2 = date(year = 2017, month = 12, day = 23) t3 = t1 — t2 print(«t3 =», t3) t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33) t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13) t6 = t4 — t5 print(«t6 =», t6) print(«type of t3 =», type(t3)) print(«type of t6 EnlighterJSRAW» data-enlighter-language=»python»>t3 = 201 days, 0:00:00 t6 = -333 days, 1:14:20 type of t3 = type of t6 =

Обратите внимание, что и t3, и t6 относятся к типу .

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

from datetime import timedelta t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33) t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54) t3 = t1 - t2 print("t3 EnlighterJSRAW" data-enlighter-language="python">t3 = 14 days, 13:55:39

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

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

from datetime import timedelta t1 = timedelta(seconds = 33) t2 = timedelta(seconds = 54) t3 = t1 - t2 print("t3 =", t3) print("t3 EnlighterJSRAW" data-enlighter-language="python">t3 = -1 day, 23:59:39 t3 = 0:00:21

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

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

from datetime import timedelta t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423) print("total seconds EnlighterJSRAW" data-enlighter-language="python">total seconds = 435633.233423

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

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

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

Читайте также:  Applications that support html

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

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

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

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

from datetime import datetime # current date and time now = datetime.now() t = now.strftime("%H:%M:%S") print("time:", t) s1 = now.strftime("%m/%d/%Y, %H:%M:%S") # mm/dd/YY H:M:S format print("s1:", s1) s2 = now.strftime("%d/%m/%Y, %H:%M:%S") # dd/mm/YY H:M:S format print("s2:", s2)

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

time: 04:34:52 s1: 12/26/2018, 04:34:52 s2: 26/12/2018, 04:34:52

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

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

  • % Y — год [0001, …, 2018, 2019, …, 9999]
  • % m — месяц [01, 02, …, 11, 12]
  • % d — день [01, 02, …, 30, 31]
  • % H — час [00, 01, …, 22, 23
  • % M — минута [00, 01, …, 58, 59]
  • % S — секунда [00, 01, …, 58, 59]

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

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

strptime()

from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object EnlighterJSRAW" data-enlighter-language="python">date_string = 21 June, 2018 date_object = 2018-06-21 00:00:00

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

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

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

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

from datetime import datetime import pytz local = datetime.now() print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S")) tz_NY = pytz.timezone('America/New_York') datetime_NY = datetime.now(tz_NY) print("NY:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S")) tz_London = pytz.timezone('Europe/London') datetime_London = datetime.now(tz_London) print("London:", datetime_London.strftime("%m/%d/%Y, %H:%M:%S"))

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

Local time: 2018-12-20 13:10:44.260462 America/New_York time: 2018-12-20 13:10:44.260462 Europe/London time: 2018-12-20 13:10:44.260462

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

Источник

Оцените статью