Методы экземпляра ditetime.date() в python
Содержание:
- Python Tutorial
- Что дает автору копирайт
- Поддерживаемые операции timedelta:
- The time Module
- Timezone Constants¶
- Timezone Constants¶
- Преобразовать локальное время в UTC.
- datetime.date
- Работа с часовыми поясами
- Clock ID Constants¶
- Необходимый инструмент и материалы
- Timezone Constants¶
- Python strptime()
- Приемы использования модуля datetime.
- Получаем текущее время и дату.
- Преобразуем объект в секунды ():
- Преобразуем время в секундах () в объект :
- Получить объект из отдельных объектов и :
- Форматирование вывода строки c датой и временем:
- Преобразование строки с датой и временем в объект :
- Сложение и вычитание даты и времени:
- Сравнение объектов :
- Python NumPy
- time.struct_time Class
- Format Code List
- Модуль time
- Python strftime()
- Measuring Performance
Python Tutorial
Python HOMEPython IntroPython Get StartedPython SyntaxPython CommentsPython Variables
Python Variables
Variable Names
Assign Multiple Values
Output Variables
Global Variables
Variable Exercises
Python Data TypesPython NumbersPython CastingPython Strings
Python Strings
Slicing Strings
Modify Strings
Concatenate Strings
Format Strings
Escape Characters
String Methods
String Exercises
Python BooleansPython OperatorsPython Lists
Python Lists
Access List Items
Change List Items
Add List Items
Remove List Items
Loop Lists
List Comprehension
Sort Lists
Copy Lists
Join Lists
List Methods
List Exercises
Python Tuples
Python Tuples
Access Tuples
Update Tuples
Unpack Tuples
Loop Tuples
Join Tuples
Tuple Methods
Tuple Exercises
Python Sets
Python Sets
Access Set Items
Add Set Items
Remove Set Items
Loop Sets
Join Sets
Set Methods
Set Exercises
Python Dictionaries
Python Dictionaries
Access Items
Change Items
Add Items
Remove Items
Loop Dictionaries
Copy Dictionaries
Nested Dictionaries
Dictionary Methods
Dictionary Exercise
Python If…ElsePython While LoopsPython For LoopsPython FunctionsPython LambdaPython ArraysPython Classes/ObjectsPython InheritancePython IteratorsPython ScopePython ModulesPython DatesPython MathPython JSONPython RegExPython PIPPython Try…ExceptPython User InputPython String Formatting
Что дает автору копирайт
Если знак копирайта не обладает юридической силой, зачем его ставить? Вероятно, таким вопросом задаются многие. На это есть две причины.
-
-
- Символ копирайта все же обладает силой предостережения: граждан, мечтающих увести ваш родной кусок текста или фотографию, станет значительно меньше.
- Если кто-то завладеет вашей интеллектуальной собственностью и сотрет знак авторского права, это будет считаться уже правонарушением, за которым следуют определенные санкции.
-
В некоторых странах, в частности, в США, указание неверной информации, касающейся права на интеллектуальную собственность, преследуется по закону.
Также следует помнить, что копирайт не является обязательным. Так, права на стихотворение возникают у автора в тот момент, когда написана заключительная строчка. Никаких прав регистрации собственности для этого не требуется.
Поддерживаемые операции timedelta:
Операция | Результат | Замечания |
t1 = t2 + t3 | Сумма t2 и t3. Впоследствии t1-t2 == t3 и t1-t3 == t2 верны. | (1) |
t1 = t2 — t3 | Разница t2 и t3. Впоследствии t1 == t2 — t3 и t2 == t1 + t3 верны. | (1)(6) |
t1 = t2 * it1 = i * t2 | Дельта умножается на целое число ‘int’. Впоследствии t1 // i == t2 верно, если i! = 0. | |
В общем случае t1 * i == t1 * (i-1) + t1 верно. | (1) | |
t1 = t2 * ft1 = f * t2 | Дельта умножается на ‘float’. Результат округляется до ближайшего кратного ‘timedelta.resolution’ с использованием округления от половины до четности. | |
f = t2 / t3 | Деление общей длительности ‘t2’ на интервал ‘t3’. Возвращает объект ‘float’. | (3) |
t1 = t2 / ft1 = t2 / i | Дельта делится на ‘float’ или ‘Int’. Результат округляется до ближайшего кратного ‘timedelta.resolution’ с использованием округления от половины до четности. | |
t1 = t2 // it1 = t2 // t3 | Вычисляется, остаток (если есть) выбрасывается. Во втором случае возвращается целое число. | (3) |
t1 = t2 % t3 | Остаток вычисляется как объект ‘timedelta’. | (3) |
q, r = divmod(t1, t2) | Вычисляет частное и остаток: q = t1 // t2 и r = t1% t2. ‘q’ представляет собой целое число, а ‘r’ представляет собой объект ‘datetime.timedelta’. | (3) |
+t1 | Возвращает объект ‘datetime.timedelta’ с тем же значением. | (2) |
-t1 | Эквивалентно datetime.timedelta(-t1.days, -t1.seconds, -t1.microseconds) и так же t1 * -1. | (1) (4) |
abs(t) | Эквивалентно ‘+t’, когда t.days >= 0, и ‘-t’, когда t.days | (2) |
str(t) | Возвращает строку в форме ,] H: MM: SS , где D отрицательно для отрицательного ‘t’. | (5) |
repr(t) | Возвращает строковое представление объекта ‘datetime.timedelta’ в виде вызова конструктора со значениями канонического атрибута. |
Замечания:
- Это точно, но может быть переполнение.
- Это точно и не может быть переполнения.
- Деление на 0 поднимает [].
- не может быть представлен как объект .
-
Строковые представления объектов нормализуются аналогично их внутреннему представлению. Это приводит к несколько необычным результатам для отрицательных .Например:
>>> datetime.timedelta(days=-1, seconds=68400) >>> print(_) # -1 day, 19:00:00
-
Выражение всегда будет равно выражению , кроме случаев, когда равно . В этом случае первое даст результат, а второе вызовет переполнение.
В дополнение к операциям, перечисленным выше, объекты поддерживают определенные дополнения и вычитания с объектами и . Смотрите «Частые приемы работы c «.
Поддерживаются сравнения объектов с некоторыми оговорками.
Сравнения или всегда возвращают , независимо от типа сравниваемого объекта:
>>> from datetime import timedelta >>> delta1 = timedelta(seconds=57) >>> delta2 = timedelta(hours=25, seconds=2) >>> delta2 != delta1 # True >>> delta2 == 5 # False
Для всех других сравнений, таких как и когда объект сравнивается с объектом другого типа, вызывается исключение :
>>> delta2 > delta1 # True >>> delta2 > 5 # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # TypeError: '>' not supported between instances of 'datetime.timedelta' and 'int'
В булевых контекстах объект считается истинным тогда и только тогда, когда он не равен .
The time Module
There is a popular time module available in Python which provides functions for working with times and for converting between representations. Here is the list of all available methods −
Sr.No. | Function with Description |
---|---|
1 |
time.altzone
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 daylight is nonzero. |
2 |
time.asctime()
Accepts a time-tuple and returns a readable 24-character string such as ‘Tue Dec 11 18:07:14 2008’. |
3 |
time.clock( )
Returns the current CPU time as a floating-point number of seconds. To measure computational costs of different approaches, the value of time.clock is more useful than that of time.time(). |
4 |
time.ctime()
Like asctime(localtime(secs)) and without arguments is like asctime( ) |
5 |
time.gmtime()
Accepts an instant expressed in seconds since the epoch and returns a time-tuple t with the UTC time. Note : t.tm_isdst is always 0 |
6 |
time.localtime()
Accepts an instant expressed in seconds since the epoch and returns a time-tuple t with the local time (t.tm_isdst is 0 or 1, depending on whether DST applies to instant secs by local rules). |
7 |
time.mktime(tupletime)
Accepts an instant expressed as a time-tuple in local time and returns a floating-point value with the instant expressed in seconds since the epoch. |
8 |
time.sleep(secs)
Suspends the calling thread for secs seconds. |
9 |
time.strftime(fmt)
Accepts an instant expressed as a time-tuple in local time and returns a string representing the instant as specified by string fmt. |
10 |
time.strptime(str,fmt=’%a %b %d %H:%M:%S %Y’)
Parses str according to format string fmt and returns the instant in time-tuple format. |
11 |
time.time( )
Returns the current time instant, a floating-point number of seconds since the epoch. |
12 |
time.tzset()
Resets the time conversion rules used by the library routines. The environment variable TZ specifies how this is done. |
Let us go through the functions briefly −
There are following two important attributes available with time module −
Sr.No. | Attribute with Description |
---|---|
1 |
time.timezone Attribute time.timezone is the offset in seconds of the local time zone (without DST) from UTC (>0 in the Americas; <=0 in most of Europe, Asia, Africa). |
2 |
time.tzname Attribute time.tzname is a pair of locale-dependent strings, which are the names of the local time zone without and with DST, respectively. |
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.
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.
Преобразовать локальное время в 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, эквивалентно .
datetime.date
Python может представлять даты различными способами. Для начала, рассмотрим формат datetime.date, так как это один из самых простых объектов date.
Python
print( datetime.date(2012, 13, 14) )
Traceback (most recent call last):
File «<string>», line 1, in <fragment>
builtins.ValueError: month must be in 1..12
1 |
print(datetime.date(2012,13,14)) Traceback(most recent call last) File»<string>»,line1,in<fragment> builtins.ValueErrormonth must be in1..12 |
Python
print(datetime.date(2012, 12, 14)) # datetime.date(2012, 12, 14)
1 | print(datetime.date(2012,12,14))# datetime.date(2012, 12, 14) |
В данном коде показано, как создать простой объект даты. Класс date принимает три аргумента: год, месяц и день. Если вы укажите неправильное значение, вы увидите ошибку ValueError, как в случае выше. В противном случае вы увидите, что объект datetime.date вернулся. Давайте взглянем на еще один пример:
Python
import datetime
d = datetime.date(2012, 12, 14)
print(d.year) # 2012
print(d.day) # 14
print(d.month) # 12
1 |
importdatetime d=datetime.date(2012,12,14) print(d.year)# 2012 print(d.day)# 14 print(d.month)# 12 |
Здесь мы присваиваем объекту date переменную d. Теперь мы можем получить доступ к различным компонентам даты по названиям, таким как d.year или d.month. Давайте посмотрим, какой сейчас день:
Python
import datetime
print(datetime.date.today()) # datetime.date(2017, 4, 5)
1 |
importdatetime print(datetime.date.today())# datetime.date(2017, 4, 5) |
Это может быть полезно, когда вам нужно записать, какой сейчас день. Или, если вам нужно выполнить основанный на сегодняшней дате расчет. Мелочь, а приятно.
Работа с часовыми поясами
К сожалению у меня нет большого опыта работы с часовыми поясами и примеры ниже не стоит рассматривать как лучшие практики.
Библиотека datetime не хранит часовые пояса, данные о переводах часов (летнее и зимнее время) и високосных секундах. К тому же, некоторые страны, могут изменить время опираясь на локальные ситуации. Эти ситуации опасны, когда идет запись в базу данных. Для вывода в GUI, можно использовать datetime.datetime.now() или высчитывать часовой пояс из базы.
Для записи в базу данных мы можем использовать время UTC и отдельно считать часовой пояс:
Следующий пример вычислит разницу времени между UTC и локальным. Насколько я знаю он может не сработать на версиях Python < 3.3:
Для вычисления других часовых поясов можно использовать стороннюю библиотеку pytz, которая их хранит:
Вывести все часовые пояса мы можем так:
На примере ниже я перевожу локальное время в часовой пояс Киева:
Теги:
#python
#datetime
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
.
Необходимый инструмент и материалы
Для строительства поддона потребуются следующие материалы и инструментарий:
- правило;
- рулетка;
- нож строительный;
- кусачки;
- строительный уровень;
- мастерок;
- шпатель обыкновенный и шпатель зубчатый;
- зубило;
- пластиковые трубы (отводная труба слива);
- канализационный трап (горловина слива);
- деревянные чурки (подставки);
- бетонная стяжка (сухая смесь);
- пленка или кусок рубероида;
- облицовочный силикатный или красный кирпич;
- гидроизоляционный состав (Файберпул, Декопроф);
-
плиточный клей ЕК-1000 и ЕК-6000;
- резиновый мастерок для плиточного клея;
- наждачная бумага;
-
мозаика и керамическая плитка водостойких марок;
-
затирка для плитки;
- цемент.
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.
Python strptime()
Python strptime() is a class method in datetime class. Its syntax is:
Both the arguments are mandatory and should be string. This function is exactly opposite of strftime() function, which converts datetime object to a string.
We have the similar function available in time module too, where its syntax is:
Here the function returns object. If format string is not provided, it defaults to “%a %b %d %H:%M:%S %Y” which matches the formatting returned by ctime() function.
If the input string cannot be parsed according to the provided format, then is raised. The exception message provides clear details about the issue in parsing.
Приемы использования модуля 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 параметром не равным никогда не будут равен , у которого параметром .
Python NumPy
NumPy IntroNumPy Getting StartedNumPy Creating ArraysNumPy Array IndexingNumPy Array SlicingNumPy Data TypesNumPy Copy vs ViewNumPy Array ShapeNumPy Array ReshapeNumPy Array IteratingNumPy Array JoinNumPy Array SplitNumPy Array SearchNumPy Array SortNumPy Array FilterNumPy Random
Random Intro
Data Distribution
Random Permutation
Seaborn Module
Normal Distribution
Binomial Distribution
Poisson Distribution
Uniform Distribution
Logistic Distribution
Multinomial Distribution
Exponential Distribution
Chi Square Distribution
Rayleigh Distribution
Pareto Distribution
Zipf Distribution
NumPy ufunc
ufunc Intro
ufunc Create Function
ufunc Simple Arithmetic
ufunc Rounding Decimals
ufunc Logs
ufunc Summations
ufunc Products
ufunc Differences
ufunc Finding LCM
ufunc Finding GCD
ufunc Trigonometric
ufunc Hyperbolic
ufunc Set Operations
time.struct_time Class
Several functions in the module such as , etc. either take object as an argument or return it.
Here’s an example of object.
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=6, tm_min=35, tm_sec=17, tm_wday=3, tm_yday=361, tm_isdst=0)
Index | Attribute | Values |
---|---|---|
0000, …., 2018, …, 9999 | ||
1 | 1, 2, …, 12 | |
2 | 1, 2, …, 31 | |
3 | 0, 1, …, 23 | |
4 | 0, 1, …, 59 | |
5 | 0, 1, …, 61 | |
6 | 0, 1, …, 6; Monday is 0 | |
7 | 1, 2, …, 366 | |
8 | 0, 1 or -1 |
The values (elements) of the object are accessible using both indices and attributes.
Python time.localtime()
The function takes the number of seconds passed since epoch as an argument and returns in local time.
When you run the program, the output will be something like:
result: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=15, tm_min=49, tm_sec=29, tm_wday=3, tm_yday=361, tm_isdst=0) year: 2018 tm_hour: 15
If no argument or is passed to , the value returned by is used.
Python time.gmtime()
The function takes the number of seconds passed since epoch as an argument and returns in UTC.
When you run the program, the output will be:
result = time.struct_time(tm_year=2018, tm_mon=12, tm_mday=28, tm_hour=8, tm_min=44, tm_sec=4, tm_wday=4, tm_yday=362, tm_isdst=0) year = 2018 tm_hour = 8
If no argument or is passed to , the value returned by is used.
Python time.mktime()
The function takes (or a tuple containing 9 elements corresponding to ) as an argument and returns the seconds passed since epoch in local time. Basically, it’s the inverse function of .
The example below shows how and are related.
When you run the program, the output will be something like:
t1: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=15, tm_min=49, tm_sec=29, tm_wday=3, tm_yday=361, tm_isdst=0) s: 1545925769.0
Python time.asctime()
The function takes (or a tuple containing 9 elements corresponding to ) as an argument and returns a string representing it. Here’s an example:
When you run the program, the output will be:
Result: Fri Dec 28 08:44:04 2018
Python time.strftime()
The function takes (or tuple corresponding to it) as an argument and returns a string representing it based on the format code used. For example,
When you run the program, the output will be something like:
12/28/2018, 09:47:41
Here, , , , etc. are format codes.
- — year
- — month
- — day
- — hour [00, 01, …, 22, 23
- — minutes
- — second
To learn more, visit: .
Python time.strptime()
The function parses a string representing time and returns .
When you run the program, the output will be:
time.struct_time(tm_year=2018, tm_mon=6, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=172, tm_isdst=-1)
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
Модуль основан на «эпохе Unix», которая началась 1 января 1970 года:
>>> import time >>> print(time.gmtime(0)) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
Функция возвращает время в секундах по Гринвичу, начиная с эпохи Unix, как число с плавающей запятой:
>>> time.time() 1524561056.103065
Функция преобразует время, выраженное в секундах с начала эпохи Unix, в строку вида «Tue Apr 24 10:36:06 2018»:
>>> print(time.ctime()) Tue Apr 24 10:36:06 2018
Функция возвращает время по Гринвичу как объект
>>> time.gmtime() time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=9, tm_min=6, tm_sec=29, tm_wday=1, tm_yday=114, tm_isdst=0)
Функция возвращает местное время (с учетом часового пояса) как объект
>>> time.localtime() time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=12, tm_min=6, tm_sec=51, tm_wday=1, tm_yday=114, tm_isdst=0)
Свойство показывает смещение часового пояса в секундах к западу от нулевого меридиана. Если часовой пояс находится восточнее, смещение отрицательно:
>>> time.altzone -14400
Функция приостановливает выполнение скрипта на определенное количество секунд.
Свойства и методы класса
- — смещение часового пояса в секундах от нулевого меридиана.
- — возвращает текущее время в секундах по Гринвичу, прошедшее с начала эпохи Unix.
- — возвращает строкове представление переданной либо текущей даты.
- — возвращает строковое представление текущего местного времени.
- — возвращает объект , текущего или переданного времени по Гринвичу.
- — возвращает объект , текущего или переданного времени. Представляющий местное время с начала эпохи Unix.
- — преобразует кортеж или объект во время в секундах.
- — приостановить выполнение программы на заданное количество секунд.
- — преобразует кортеж или в строку по формату.
Python strftime()
- Python datetime module strftime() function and time module strftime() function behaves exactly the same. However, their syntax is slightly different.
Python datetime module strftime() function syntax is:
Python time module strftime() function syntax is:
This function converts a tuple or struct_time object to a string as specified by the format argument. If ‘time_object’ is not provided, the current time as returned by localtime() is used. The format argument must be a string.
- For time objects (datetime.time()), the format codes for the year, month, and day should not be used, as time objects have no such values. If they’re used anyway, 1900 is substituted for the year, and 1 for the month and day.
- For date objects (datetime.date()), the format codes for hours, minutes, seconds, and microseconds should not be used, as date objects have no such values. If they’re used anyway, 0 is substituted for them.
Measuring Performance
You can use to measure the performance of your program.
The way you do this is to use which, as the name suggests, provides a performance counter with a high resolution to measure short distances of time.
To use , you place a counter before your code begins execution as well as after your code’s execution completes:
>>>
First, captures the moment before you call the function. captures the moment after the function returns. The function’s total execution time took seconds.
Technical Detail: Python 3.7 introduced , which works the same as , but uses nanoseconds instead of seconds.
(or ) is the most precise way to measure the performance of your code using one execution. However, if you’re trying to accurately gauge the performance of a code snippet, I recommend using the Python module.