Функция strftime() модуля time в python

Timezone Constants¶

The offset of the local DST timezone, in seconds west of UTC, if one is defined.
This is negative if the local DST timezone is east of UTC (as in Western Europe,
including the UK). Only use this if is nonzero. See note below.

Nonzero if a DST timezone is defined. See note below.

The offset of the local (non-DST) timezone, in seconds west of UTC (negative in
most of Western Europe, positive in the US, zero in the UK). See note below.

A tuple of two strings: the first is the name of the local non-DST timezone, the
second is the name of the local DST timezone. If no DST timezone is defined,
the second string should not be used. See note below.

Note

For the above Timezone constants (, , ,
and ), the value is determined by the timezone rules in effect
at module load time or the last time is called and may be incorrect
for times in the past. It is recommended to use the and
results from to obtain timezone information.

See also

Module

More object-oriented interface to dates and times.

Module

Internationalization services. The locale setting affects the interpretation
of many format specifiers in and .

Module

General calendar-related functions. is the
inverse of from this module.

Footnotes

The use of is now deprecated, but the escape that expands to the
preferred hour/minute offset is not supported by all ANSI C libraries. Also, a
strict reading of the original 1982 RFC 822 standard calls for a two-digit
year (%y rather than %Y), but practice moved to 4-digit years long before the
year 2000. After that, RFC 822 became obsolete and the 4-digit year has
been first recommended by RFC 1123 and then mandated by RFC 2822.

datetime.strptime()

Теперь давайте воспользуемся для преобразования заданной строки в объект datetime.

from datetime import datetime

dt_string = "06//05//2020 12:06:58"

obj = datetime.strptime(dt_string, "%d//%m//%Y %H:%M:%S")

print(type(obj))
print("DateTime object: ", obj)
print("Time object: ", obj.time())
print("Date object: ", obj.date())

Выход:

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

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

from datetime import datetime

dt_string = str(input("Enter date in dd:mm:yyyy format:"))

try:
    obj = datetime.strptime(dt_string, "%d:%m:%Y")
    print(obj)
    print(obj.strftime("Date:%d Month:%m Year:%Y")) #strftime to format datetime obj
except ValueError as ex:
    print("ValueError: ", ex)

Выход:

В этом примере мы берем как пользователем данные и преобразуем его в объект datetime с помощью . Мы снова берем этот объект и выводим его в желаемом формате с помощью метода .

Что, если мы не предоставим методу strptime() строку, соответствующую указанному формату? В этом случае возникает . Посмотрите на вывод ниже (для того же кода), где мы это делаем.

Enter date in dd:mm:yyyy format:6/5/20
ValueError:  time data '6/5/20' does not match format '%d:%m:%Y'

Преобразовать локальное время в UTC.

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

Всегда храните и работайте со временем в UTC. Если вам нужно сохранить оригинальные данные — пишите их отдельно. Никогда не храните локальное время и tz — Time Zone.

UTC — это зона без перехода на летнее время и без каких бы то ни было изменений в прошлом. Из UTC можно конвертировать время в локальное для любого часового пояса.

Так же смотрите модуль (добавлен в Python 3.9) — конкретная реализация часового пояса для поддержки базы данных часовых поясов IANA.

Возвращаемое значение:

объект смещения времени, который передается в качестве аргумента tz объектам datetime.datetime() и datetime.time().

Описание:

Класс модуля является подклассом , каждый экземпляр которого представляет часовой пояс, определенный фиксированным смещением от UTC.

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

Аргумент смещения должен быть указан как объект datetime.timedelta(), представляющий разницу между местным временем и UTC. Смещение должно быть строго между и , в противном случае появиться исключение .

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

>>> import datetime
>>> offset = datetime.timedelta(hours=3)
>>> datetime.timezone(offset, name='МСК')
# datetime.timezone(datetime.timedelta(0, 10800), 'МСК')

Методы экземпляра класса :

Метод возвращает фиксированное значение, указанное при создании экземпляра часового пояса.

Аргумент игнорируется. Возвращаемое значение является экземпляром , равным разнице между местным временем и UTC.

Смещение UTC не ограничено целым числом минут.

>>> import datetime
>>> offset = datetime.timedelta(hours=3)
>>> tz = datetime.timezone(offset, name='МСК')
>>> dt = datetime.datetime.now()
>>> tz.utcoffset(dt)
# datetime.timedelta(0, 10800)

# или
>>> dt = datetime.datetime.now(tz=tz)
>>> dt.utcoffset()
# datetime.timedelta(0, 10800)

Метод возвращает фиксированное значение, указанное при создании экземпляра часового пояса.

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

>>> import datetime
>>> offset = datetime.timedelta(hours=3)
>>> tz = datetime.timezone(offset, name='МСК')
>>> dt = datetime.datetime.now()
>>> tz.tzname(dt)
# 'МСК'

# или
>>> dt = datetime.datetime.now(tz=tz)
>>> dt.tzname()
# 'МСК'

Метод всегда возвращает .

Метод возвращает . Аргумент должен быть «осведомленным» экземпляром с , установленным в .

Атрибут возвращает часовой пояс UTC, эквивалентно .

Clock ID Constants¶

These constants are used as parameters for and
.

Identical to , except it also includes any time that
the system is suspended.

This allows applications to get a suspend-aware monotonic clock without
having to deal with the complications of , which may
have discontinuities if the time is changed using or
similar.

: Linux 2.6.39 or later.

New in version 3.7.

The Solaris OS has a timer that attempts to use an optimal
hardware source, and may give close to nanosecond resolution.
is the nonadjustable, high-resolution clock.

: Solaris.

New in version 3.3.

Clock that cannot be set and represents monotonic time since some unspecified
starting point.

: Unix.

New in version 3.3.

Similar to , but provides access to a raw
hardware-based time that is not subject to NTP adjustments.

: Linux 2.6.28 and newer, macOS 10.12 and newer.

New in version 3.3.

High-resolution per-process timer from the CPU.

: Unix.

New in version 3.3.

High-resolution per-process timer from the CPU.

: FreeBSD, NetBSD 7 or later, OpenBSD.

New in version 3.7.

The system must have a current leap second table in order for this to give
the correct answer. PTP or NTP software can maintain a leap second table.

: Linux.

New in version 3.9.

Thread-specific CPU-time clock.

: Unix.

New in version 3.3.

Time whose absolute value is the time the system has been running and not
suspended, providing accurate uptime measurement, both absolute and
interval.

: FreeBSD, OpenBSD 5.5 or later.

New in version 3.7.

Clock that increments monotonically, tracking the time since an arbitrary
point, unaffected by frequency or time adjustments and not incremented while
the system is asleep.

: macOS 10.12 and newer.

New in version 3.8.

The following constant is the only parameter that can be sent to
.

datetime.strptime() для преобразования строки в дату времени

В предыдущем уроке мы узнали как получить дату в строковом формате с помощью метода . Для получения объекта мы будем использовать метод для преобразования revere. и в этих двух методах означают и соответственно.

Метод анализирует входную строку с заданным форматом и возвращает объект .

Ниже приведен базовый пример использования этого метода ,

Результатом будет

Директивы кодов формата строк приведены здесь для справки.

Директива Значение Пример
День недели, как сокращенное название Местечка. Sun, Mon, …, Sat (en_US);So, Mo, …, Sa (de_DE)
В будний день, как полное название местности. Воскресенье, понедельник, …, суббота (en_US);Соннтаг, Монтаг, …, Самстаг (de_DE)
День недели в виде десятичного числа, где 0 — воскресенье и 6 — суббота. 0, 1, …, 6
День месяца в виде десятичного числа с нулевым знаком. 01, 02, …, 31
Месяц, как сокращенное название местности. Jan, Feb, …, Dec (en_US);Jan, Feb, …, Dez (de_DE)
Месяц, как полное название местности. Январь, февраль, …, декабрь (en_US); Януар, февраль, …, Дезембер (de_DE).
Месяц в виде десятичного числа с нулевым знаком. 01, 02, …, 12
Год без столетия в виде десятичного числа с нулевым знаком. 00, 01, …, 99
Год с веком в качестве десятичного числа. 0001, 0002, …, 2013, 2014, …, 9998, 9999
Час (24-часовой) в виде десятичного числа с нулевым подстановочным знаком. 00, 01, …, 23
Час (12-часовой) в качестве десятичного числа с нулевым подстановочным знаком. 01, 02, …, 12
Локальный эквивалент либо АМ, либо ПМ. AM, PM (en_US); am, pm (de_DE).
Минута в виде десятичного числа с нулевым знаком. 00, 01, …, 59
Второе в качестве десятичного числа с нулевым знаком. 00, 01, …, 59
Микросекунда в качестве десятичного числа, с нулевой накладкой слева. 000000, 000001, …, 999999
UTC-смещение в виде ±HHMMSS. (пустая), +0000, -0400, +1030.
Имя часового пояса (пустая строка, если объект наивен). (пустая), UTC, EST, CST.
День года в виде десятичного числа с нулевым знаком. 001, 002, …, 366
Номер недели года (воскресенье как первый день недели) в виде десятичного числа с нулевой подстановкой. Все дни в новом году, предшествующие первому воскресенью, считаются в неделю 0. 00, 01, …, 53
Номер недели года (понедельник как первый день недели) в виде десятичного числа. Все дни в новом году, предшествующие первому понедельнику, считаются в нулевой неделе. 00, 01, …, 53
Местное представительство по дате и времени. Tue Aug 16 21:30:00 1988 (en_US);Di 16 Aug 21:30:00 1988 (de_DE)
Соответствующая дата представительства Локала. 08/16/88 (нет);08/16/1988 (en_US);16.08.1988 (de_DE).
Соответствующее временное представительство Локала. 21:30:00 (en_US);21:30:00 (de_DE)
Буквальный “%” персонаж. %

Timezone Constants¶

The offset of the local DST timezone, in seconds west of UTC, if one is defined.
This is negative if the local DST timezone is east of UTC (as in Western Europe,
including the UK). Only use this if is nonzero. See note below.

Nonzero if a DST timezone is defined. See note below.

The offset of the local (non-DST) timezone, in seconds west of UTC (negative in
most of Western Europe, positive in the US, zero in the UK). See note below.

A tuple of two strings: the first is the name of the local non-DST timezone, the
second is the name of the local DST timezone. If no DST timezone is defined,
the second string should not be used. See note below.

Note

For the above Timezone constants (, , ,
and ), the value is determined by the timezone rules in effect
at module load time or the last time is called and may be incorrect
for times in the past. It is recommended to use the and
results from to obtain timezone information.

See also

Module

More object-oriented interface to dates and times.

Module

Internationalization services. The locale setting affects the interpretation
of many format specifiers in and .

Module

General calendar-related functions. is the
inverse of from this module.

Footnotes

The use of is now deprecated, but the escape that expands to the
preferred hour/minute offset is not supported by all ANSI C libraries. Also, a
strict reading of the original 1982 RFC 822 standard calls for a two-digit
year (%y rather than %Y), but practice moved to 4-digit years long before the
year 2000. After that, RFC 822 became obsolete and the 4-digit year has
been first recommended by RFC 1123 and then mandated by RFC 2822.

Format Code List

The table below shows all the format codes that you can use.

Directive Meaning Example
Abbreviated weekday name. Sun, Mon, …
Full weekday name. Sunday, Monday, …
Weekday as a decimal number. 0, 1, …, 6
Day of the month as a zero-padded decimal. 01, 02, …, 31
Day of the month as a decimal number. 1, 2, …, 30
Abbreviated month name. Jan, Feb, …, Dec
Full month name. January, February, …
Month as a zero-padded decimal number. 01, 02, …, 12
Month as a decimal number. 1, 2, …, 12
Year without century as a zero-padded decimal number. 00, 01, …, 99
Year without century as a decimal number. 0, 1, …, 99
Year with century as a decimal number. 2013, 2019 etc.
Hour (24-hour clock) as a zero-padded decimal number. 00, 01, …, 23
Hour (24-hour clock) as a decimal number. 0, 1, …, 23
Hour (12-hour clock) as a zero-padded decimal number. 01, 02, …, 12
Hour (12-hour clock) as a decimal number. 1, 2, … 12
Locale’s AM or PM. AM, PM
Minute as a zero-padded decimal number. 00, 01, …, 59
Minute as a decimal number. 0, 1, …, 59
Second as a zero-padded decimal number. 00, 01, …, 59
Second as a decimal number. 0, 1, …, 59
Microsecond as a decimal number, zero-padded on the left. 000000 — 999999
UTC offset in the form +HHMM or -HHMM.  
Time zone name.  
Day of the year as a zero-padded decimal number. 001, 002, …, 366
Day of the year as a decimal number. 1, 2, …, 366
Week number of the year (Sunday as the first day of the week). All days in a new year preceding the first Sunday are considered to be in week 0. 00, 01, …, 53
Week number of the year (Monday as the first day of the week). All days in a new year preceding the first Monday are considered to be in week 0. 00, 01, …, 53
Locale’s appropriate date and time representation. Mon Sep 30 07:06:05 2013
Locale’s appropriate date representation. 09/30/13
Locale’s appropriate time representation. 07:06:05
A literal ‘%’ character. %

ValueError in strptime()

If the string (first argument) and the format code (second argument) passed to the doesn’t match, you will get . For example:

If you run this program, you will get an error.

ValueError: time data '12/11/2018' does not match format '%d %m %Y'

Recommended Readings: Python strftime()

time.ctime

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

Python

import time
print(time.ctime()) # ‘Wed Apr 5 00:02:49 2017’

print(time.ctime(1384112639)) # ‘Sun Nov 10 13:43:59 2013’

1
2
3
4

importtime

print(time.ctime())# ‘Wed Apr 5 00:02:49 2017’

print(time.ctime(1384112639))# ‘Sun Nov 10 13:43:59 2013’

В данном коде мы показали результаты вызова функции time.ctime, как со случайным набором секунд, начиная с эпохи, так и с пустным значением. Это можно применить, к примеру, в том случае, кода кому-нибудь нужно сохранить дату в секундах, начиная с эпохи, после чего конвертировать это в более удабриваемый формат. Немного проще, сохранить большое целое число (или длинное) в базу данных, чем страдать над ним, форматируя объект datetime в какой-либо объект даты, который принимает база данных. Конечно, это также имеет свой недостаток: вам, возможно, нужно будет преобразовать целое число или значение с плавающей запятой обратно в строку.

Что дает автору копирайт

Если знак копирайта не обладает юридической силой, зачем его ставить? Вероятно, таким вопросом задаются многие. На это есть две причины.

      1. Символ копирайта все же обладает силой предостережения: граждан, мечтающих увести ваш родной кусок текста или фотографию, станет значительно меньше.
      2. Если кто-то завладеет вашей интеллектуальной собственностью и сотрет знак авторского права, это будет считаться уже правонарушением, за которым следуют определенные санкции.

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

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

The calendar Module

The calendar module supplies calendar-related functions, including functions to print a text calendar for a given month or year.

By default, calendar takes Monday as the first day of the week and Sunday as the last one. To change this, call calendar.setfirstweekday() function.

Here is a list of functions available with the calendar module −

Sr.No. Function with Description
1

calendar.calendar(year,w=2,l=1,c=6)

Returns a multiline string with a calendar for year year formatted into three columns separated by c spaces. w is the width in characters of each date; each line has length 21*w+18+2*c. l is the number of lines for each week.

2

calendar.firstweekday( )

Returns the current setting for the weekday that starts each week. By default, when calendar is first imported, this is 0, meaning Monday.

3

calendar.isleap(year)

Returns True if year is a leap year; otherwise, False.

4

calendar.leapdays(y1,y2)

Returns the total number of leap days in the years within range(y1,y2).

5

calendar.month(year,month,w=2,l=1)

Returns a multiline string with a calendar for month month of year year, one line per week plus two header lines. w is the width in characters of each date; each line has length 7*w+6. l is the number of lines for each week.

6

calendar.monthcalendar(year,month)

Returns a list of lists of ints. Each sublist denotes a week. Days outside month month of year year are set to 0; days within the month are set to their day-of-month, 1 and up.

7

calendar.monthrange(year,month)

Returns two integers. The first one is the code of the weekday for the first day of the month month in year year; the second one is the number of days in the month. Weekday codes are 0 (Monday) to 6 (Sunday); month numbers are 1 to 12.

8

calendar.prcal(year,w=2,l=1,c=6)

Like print calendar.calendar(year,w,l,c).

9

calendar.prmonth(year,month,w=2,l=1)

Like print calendar.month(year,month,w,l).

10

calendar.setfirstweekday(weekday)

Sets the first day of each week to weekday code weekday. Weekday codes are 0 (Monday) to 6 (Sunday).

11

calendar.timegm(tupletime)

The inverse of time.gmtime: accepts a time instant in time-tuple form and returns the same instant as a floating-point number of seconds since the epoch.

12

calendar.weekday(year,month,day)

Returns the weekday code for the given date. Weekday codes are 0 (Monday) to 6 (Sunday); month numbers are 1 (January) to 12 (December).

The strftime() Method

The object has a method for formatting date objects into readable strings.

The method is called , and takes one parameter,
, to specify the format of the returned string:

Example

Display the name of the month:

import datetimex = datetime.datetime(2018, 6, 1)print(x.strftime(«%B»))

A reference of all the legal format codes:

Directive Description Example Try it
%a Weekday, short version Wed Try it »
%A Weekday, full version Wednesday Try it »
%w Weekday as a number 0-6, 0 is Sunday 3 Try it »
%d Day of month 01-31 31 Try it »
%b Month name, short version Dec Try it »
%B Month name, full version December Try it »
%m Month as a number 01-12 12 Try it »
%y Year, short version, without century 18 Try it »
%Y Year, full version 2018 Try it »
%H Hour 00-23 17 Try it »
%I Hour 00-12 05 Try it »
%p AM/PM PM Try it »
%M Minute 00-59 41 Try it »
%S Second 00-59 08 Try it »
%f Microsecond 000000-999999 548513 Try it »
%z UTC offset +0100
%Z Timezone CST
%j Day number of year 001-366 365 Try it »
%U Week number of year, Sunday as the first day of week, 00-53 52 Try it »
%W Week number of year, Monday as the first day of week, 00-53 52 Try it »
%c Local version of date and time Mon Dec 31 17:41:00 2018 Try it »
%x Local version of date 12/31/18 Try it »
%X Local version of time 17:41:00 Try it »
%% A % character % Try it »

❮ Previous
Next ❯

datetime.date Class

You can instantiate objects from the class. A date object represents a date (year, month and day).

Example 3: Date object to represent a date

When you run the program, the output will be:

2019-04-13

If you are wondering, in the above example is a constructor of the class. The constructor takes three arguments: year, month and day.

The variable a is a object.

We can only import class from the module. Here’s how:

Example 5: Get date from a timestamp

We can also create objects from a timestamp. A Unix timestamp is the number of seconds between a particular date and January 1, 1970 at UTC. You can convert a timestamp to date using method.

When you run the program, the output will be:

Date = 2012-01-11

Python format datetime

The way date and time is represented may be different in different places, organizations etc. It’s more common to use in the US, whereas is more common in the UK.

Python has and methods to handle this.

Example 15: Format date using strftime()

When you run the program, the output will be something like:


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

Here, , , , etc. are format codes. The method takes one or more format codes and returns a formatted string based on it.

In the above program, t, s1 and s2 are strings.

  • — year
  • — month
  • — day
  • — hour [00, 01, …, 22, 23
  • — minute
  • — second

To learn more about and format codes, visit: Python strftime().

Example 16: strptime()

When you run the program, the output will be:


date_string = 21 June, 2018
date_object = 2018-06-21 00:00:00

The method takes two arguments:

  1. a string representing date and time
  2. format code equivalent to the first argument

By the way, , and format codes are used for day, month(full name) and year respectively.

Visit Python strptime() to learn more.

Приемы использования модуля datetime.

В этом разделе представлены частые приемы работы с объектом даты и времени .

  • ,
  • ,
  • ,
  • .
  • ,
  • ,
  • .
  • ,

Получаем текущее время и дату.

>>> import datetime
>>> dt = datetime.datetime.today()
>>> dt
# datetime.datetime(2020, 5, 5, 14, 56, 40, 902733)

# получаем отдельные компоненты
# даты 
>>> print(dt.year, dt.month, dt.day)
# 2020 5 5

# времени
>>> print(dt.hour, dt.minute, dt.second)
# 14 56 40

# Получаем объект даты
>>> dt.date()
# atetime.date(2020, 5, 5)

# Получаем объект времени
>>> dt.time()
# datetime.time(14, 56, 40, 902733)

Преобразуем объект в секунды ():

Задача: имеем объект , необходимо его преобразовать в секунды ().

>>> import datetime

# Для преобразования получим объект `datetime`, 
# содержащий дату и время в настоящий момент
>>> dt = datetime.datetime.now()
>>> dt  
# datetime.datetime(2020, 5, 6, 13, 52, 5, 208688)

# теперь получаем из `datetime` секунды - `timestamp` 
>>> second = dt.timestamp()
>>> second
# 1588762325.208688

# можно быстрее, одной строкой
>>> second = datetime.datetime.now().timestamp()
# 1588762325.208688

# если не нужны доли секунд, то 
# преобразуем в тип int
>>> int(second)
# 1588762325

Преобразуем время в секундах () в объект :

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

>>> import datetime

# имеем время в секундах
second = 1588762325

# преобразовываем секунды в объект 'datetime'
# его же методом '.timestamp()'
>>> dt = datetime.datetime.fromtimestamp(second)
>>> dt
# datetime.datetime(2020, 5, 6, 13, 52, 5)

# дальше работаем как с объектом 
# получаем строку 
>>> dt.strfptint('%d.%m.%Y %H:%M')
# '06.05.2020 13:52'

# через сколько новый год
>>> future_dt = datetime.datetime.strptime('01.01.2021', '%d.%m.%Y')
>>> delta = future_dt - dt
# через дней
>>> delta.days
# 239

# секунд
>>> delta.seconds
# 36475

# месяцев
>>> 239 // 30
# 7

Получить объект из отдельных объектов и :

>>> import datetime 
# дата
>>> date = datetime.date.today()
# время
>>> time = datetime.time(23, 55)
# интервал
>>> delta = datetime.timedelta(minutes=30)
# соединяем все вместе
>>> datetime.datetime.combine(date, time) + delta
# datetime.datetime(2020, 5, 6, 0, 25)

Форматирование вывода строки c датой и временем:

Полный список директив форматирования смотрите в разделе «Коды форматирования и модуля «.

>>> import datetime
>>> dt = datetime.datetime.now()
>>> dt.strftime('%H:%M - %m.%d.%Y года')
# '09:56 - 05.06.2020 года'
>>> dt.strftime('%H часов %M минут %m.%d.%Y года')
# '09 часов 56 минут 05.06.2020 года'
>>> dt.strftime('%m/%d/%y')
# '05/06/20'
>>> dt.strftime('%Y-%m-%d')
# '2020-05-06'

# форматирование даты при помощи функции format()
>>> 'The {1} is {0:%d}, the {2} is {0:%B}, the {3} is {0:%I:%M%p}.' \
                               .format(dt, "day", "month", "time")
'The day is 06, the month is May, the time is 01:52PM.'

Преобразование строки с датой и временем в объект :

Полный список директив форматирования смотрите в разделе «Коды форматирования и модуля «.

>>> import datetime
>>> date_str = 'Fri, 24 Apr 2021 16:22:54 +0000'
>>> format = '%a, %d %b %Y %H:%M:%S +0000'
>>> datetime.datetime.strptime(date_str, format)
# datetime.datetime(2021, 4, 24, 16, 22, 54)

>>> date_str = '24.12.2020 16:22'
>>> format = '%d.%m.%Y %H:%M'
>>> datetime.datetime.strptime(date_str, format)
# datetime.datetime(2020, 12, 24, 16, 22)

Сложение и вычитание даты и времени:

При вычитании дат получается объект продолжительности —

Подсчет дней до события.

>>> import datetime
>>> today = datetime.datetime.now()
>>> date = datetime.datetime(2020, 12, 6)
>>> delta = date - today
>>> delta.days
# 213

Подсчет дней прошедших с события.

>>> import datetime
>>> date = datetime.datetime(2019, 12, 31)
>>> today = datetime.datetime.now()
>>> delta = today - date
>>> delta.days
# 127

Узнать дату и время предстоящего или прошедшего события.

>>> import datetime
>>> today = datetime.datetime.now()

# узнаем, какая дата будет через 3 недели и 5 дней 
>>> delta = datetime.timedelta(weeks=3, days=5)
>>> date = today + delta
>>> date.day, date.month, date.year
# (1, 6, 2020)

# узнаем, какая дата была 100 дней назад
>>> delta = datetime.timedelta(days=100)
>>> date = today - delta
>>> date.day, date.month, date.year
# (27, 1, 2020)

# узнаем, сколько время будет через 1 час 30 минут и 45 секунд
>>> delta = datetime.timedelta(hours=1, minutes=30, seconds=45)
>>> date = today + delta
>>> date.hour, date.minute, date.second
# (16, 18, 15)

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

  • datetime1 считается меньше datetime2, когда datetime1 предшествует datetime2 во времени
  • При сравнении c параметром не равным с , у которого параметром вызывается .
  • При сравнений на равенство c параметром не равным никогда не будут равен , у которого параметром .
Добавить комментарий

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

Adblock
detector