Руководство Python Date Time
1. Обзор
Python дает вам 4 модуля, связанных с датой и временем.
Модуль | Описание |
time | time это модуль включаиющий только функции и константы связанные с датой и временем, не имеет класса (class), который определен в данном модуле. |
datetime | Этот модуль определяет класс представляющий дату и время. |
calendar | Этот модуль содержит функции связанные с календарем. Он так же определяет класс представляющий Календарь, и связанные исключения |
locale | Этот модуль содержит функции использующиеся для форматирования (format), или парсирования (parse) даты и времени на основании locale (регион, география). |
datetime module:
datetime это модуль, смоделирован на основании направления объекта (object oriented), чтобы работать с датой и временем в Python. Он имеет несколько классов, предствляющих дату и время.
Класс | Описание |
datetime.date | Объект date представляет дату (date), не включая время, по календарю Gregorian (Грегорианский календарь). |
datetime.datetime | Объект datetime представляет дату (date) и время, по календарю Gregorian. |
datetime.time | Объект time представляет время (time), не включая дату (date). |
datetime.tzinfo | Это базовый абстрактный класс (base abstract class) для объектов информации часового пояса (timezone). |
datetime.timezone | Это прямой подкласс класса tzinfo, по стандарту UTC (Coordinated Universal Time) (Всемирное координированное время). |
datetime.timedelta | Объект timedelta описывает период времени (duration), это период между 2-мя моментами. |
calendar module:
calendar это модуль предоставляющий функции, и некоторые классы связанные с Календарем, помогает генерировать (generate) изображения календаря формата text, html, ....
2. Понятие о Ticks
В компьютерной сфере 12:00 дня, 1 января 1970 года - это особенное время, которое используется для начала отсчета времени. Этот особенный момент, называется epoch (компьютерная эпоха)
В Python, время между настоящим моментом и особенным временем, упомянутоое выше, выражается в секундах. Такой временной период называется Ticks.
В Python, время между настоящим моментом и особенным временем, упомянутоое выше, выражается в секундах. Такой временной период называется Ticks.
Функцияtime() в модулеtime возвращает количество секунд (seconds) с момента 12.00, 1 января 1970 года до настоящего времени. Она возвращает тип с плавающей точкой (floating point).
ticketExample.py
# Импортировать module time.
import time;
# Количество секунд считая с 12 часов утра 1-1-1970 до данного момента.
ticks = time.time()
print ("Number of ticks since 12:00am, January 1, 1970: ", ticks)
Output:
Number of ticks since 12:00am, January 1, 1970: 1492244686.7766237
3. time module
time представляет собой модуль включает в себя только функции и константы, связанные с датой и временем,имеет несколько классов (class), написанных на C/C++ и определены на этом модуле, как например класс struct_time.
На модуле time, Время представлено с помощью Ticks или struct_time. Он содержит функции для форматирования (format) Ticks или struct_time, чтобы сформировать string; и парсирование (parse), string, чтобы сформировать Ticks или struct_time.
0 | tm_year | (for example, 1993) |
1 | tm_mon | range [1, 12] |
2 | tm_mday | range [1, 31] |
3 | tm_hour | range [0, 23] |
4 | tm_min | range [0, 59] |
5 | tm_sec | range [0, 61]; See more below |
6 | tm_wday | range [0, 6], Monday is 0 |
7 | tm_yday | range [1, 366] |
8 | tm_isdst | 0, 1 or -1; see below |
N/A | tm_zone | abbreviation of timezone name |
N/A | tm_gmtoff | offset east of UTC in seconds |
tm_secРамка секунд на самом деле (second) от 0 до 61; это объясняется, как секунда координации (double leap seconds), хотя это очень редко.
Фунции time вызывают функции написанные на языке С. Ниже приведён список наиболее распространенных функций, просмотрите офицальный сайт Python для более подробной информации.
Ticks ==> struct_time
Функция | Описание |
time.gmtime ([сек]) | Конвертирует время, отсчитанное с момента spochв struct_time, в формате UTC, где dst флаг является 0. Если параметр secsне предоставлен или None, то он имеет значение по-умолчанию,возвращаемое функциейtime(). |
time.localtime ([сек]) | Похожа на функцию gmtime(), но конвертирует в местное время (local time). А флаг dst имеет значение 1. |
Функция gmtime([secs]) и localtime([secs]) оба возвращают тип struct_time.
time_gmtimeExample.py
import time
# 1 секунда после компьютерной эпохи (epoch).
# Данная функция возвращает один вид struct: struct_time
ts = time.gmtime(1)
print ("1 seconds after epoch: ")
print (ts)
print ("\n")
# Данный момент, похож на time.gmtime( time.time() )
# Данная функция возвращает вид struct: struct_time
ts = time.gmtime()
print ("struct_time for current time: ")
print (ts)
struct_time ==> Ticks
Вы можете конвертировать struct_time или Tuple, представляющие время, в Ticks (количество секунд считая с момента epoch).
time_mktime_example.py
import time
a_struct_time = time.localtime()
print ("Current time as struct_time: ");
print (a_struct_time)
# Конвертировать struct_time или Tuple в Ticks.
ticks = time.mktime(a_struct_time)
print ("Ticks: ", ticks)
# Один Tuple имеет 9 элементов.
aTupleTime = ( 2017, 4, 15, 13, 5, 34, 0, 0, 0)
print ("\n")
print ("A Tuple represents time: ")
print (aTupleTime)
# Конвертировать struct_time или Tuple в Ticks.
ticks = time.mktime(aTupleTime)
print ("Ticks: ", ticks)
struct_time, Ticks ==> string
Функция | Описание |
time.asctime([struct_t]) | Конвертирует tuple или struct_time представляющее время как возвращаемое gmtime() или localtime() в string в следующей форме: 'Sun Jun 20 23:21:05 1993'. Если параметр struct_t не предоставлен, текущее время возвращенное с помощью localtime() будет использовано. Локальная информация (locale) не используется asctime(). |
time.ctime([secs]) | Конвертирует время посекундно (seconds) со времени epoch в string представляющее локальное время (local time). Если параметр secs не предоставлен или None, текущее время возвращенное с помощью time() будет использовано. ctime(secs) эквивалентно asctime(localtime(secs)). Локальная информация (locale) не используется ctime(). |
time_asctime_ctime_example.py
import time
# Tuple с 9-ю элементами.
# (Year, month, day, hour, minute, second, wday, yday, isdst)
a_tuple_time = (2017, 4, 15 , 22 , 1, 29, 0, 0, 0)
a_timeAsString = time.asctime(a_tuple_time)
print ("time.asctime(a_tuple_time): ", a_timeAsString)
a_struct_time = time.localtime()
print ("a_struct_time: ", a_struct_time)
a_timeAsString = time.asctime(a_struct_time)
print ("time.asctime(a_struct_time): ", a_timeAsString)
# Количество секунд, считая от 12.00 утра 1-1-1970 до текущего времени.
ticks = time.time()
a_timeAsString = time.ctime(ticks)
print ("time.ctime(ticks): ", a_timeAsString)
Парсирование и форматирование
module time предоставляет некоторые функции использующиеся для парсирования (parse) string во время. И наоборот, форматирует (format) время в string.
Функция | Описание |
time.strptime(string[, format] ) | Парсирует string представляющий время по формату. Возвращает struct_time как возвращается функцией gmtime() или localtime(). |
time.strftime(format [, t] ) | Конвертирует Tuple или struct_time, представляющее время, как возвращается функцией gmtime() или localtime() в string, определенный параметром format. Если он не предоставлен, текущее время возвращенное с помощью localtime() будет использовано. Параметр format должен являться string. ValueError может быть выброшен (throw) если определенное поле (field) в параметре 't' находится вне разрешаемой рамки. |
Пример парсирования (parse) string во время вида struct_time.
time_strptime_example.py
import time
# String представляет время.
aStringTime = "22-12-2007 23:30:59"
a_struct_time = time.strptime(aStringTime, "%d-%m-%Y %H:%M:%S")
print ("a_struct_time:")
print (a_struct_time)
Смотрите так же module time:
4. datetime module
datetime это модуль, смоделированный как объектно-ориентированный для работы с датой и временем в Python. Он определяет несколько классов, представляющих дату и время.
Класс | Описание |
datetime.date | Объект date представляет дату (date), не включая время, по календарю Gregorian. |
datetime.datetime | Объект datetime представляет дату (date) и время, по календарю Gregorian. |
datetime.time | Объект time представляет время (time), не включая дату (date). |
datetime.tzinfo | Это базовый абстрактный класс(base abstract class) для объектов с информацией часового пояса. |
datetime.timezone | Это прямой подкласс класса tzinfo, по стандарту UTC (Coordinated Universal Time) (Всемирное координированное время). |
datetime.timedelta | Объект timedelta представляет период, разница между двумя датами или временем. |
5. datetime.timedelta
timedelta это класс, находящийся в модуле datetime, описывает промежуток времени. Является разницей между 2 периодами времени.
Класс timedelta имеет 7 атрибутов (attribute), все имеют значение по умолчанию это 0.
Attribute | Attribute | Range |
days | -999999999 : 999999999 | |
seconds | 0 : 86399 | |
microseconds | 1 seconds = 1000,000 microseconds | 0 : 999999 |
milliseconds | 1 seconds = 1000 milliseconds | |
minutes | ||
hours | ||
weeks |
Операторы:
t1 = t2 + t3 | t2 = (hours = 10, seconds= 2)
t3 = (hours = 1, minutes = 3) --> t1 = (hours= 11, minutes = 3, seconds = 2) |
t1 = t2 - t3 | t2 = (hours = 10, seconds= 2)
t3 = (hours = 1, minutes = 3) --> t1 = (hours= 8, minutes = 57, seconds = 2) |
t1 = t2 * i | t2 = (hours = 10, seconds= 2)
i = 3 --> t1 = (days =1, hours = 6, seconds= 6) |
t1 = t2 | t2 = (hours = 25, seconds= 2)
--> t1 = (days: 1, hours: 1, seconds: 2) |
+t1 | return t1 |
-t1 | t1 = (hours = 10, seconds= 2)
--> -t1 = (days = -1, hours = 13, minutes = 59, seconds= 58) |
abs(t) | Absolute value, equivalent to + t when t.days> = 0, and is -t when t.days <0.
t = (hours= -25, minutes = 3) --> t = (days = -2, hours = 23, minutes = 3) --> abs(t) = (days = 1, hours = 0, minutes = 57) |
str(t) | Returns the string in the form [D day [s],] [H] H: MM: SS [.UUUUUU], D can get negative value. |
repr(t) | Returns a string in the form datetime.timedelta (D [, S [, U]]), D can get negative value |
6. datetime.date
datetime.date это класс, его объект представляет дату (date), не включая информацию времени
Constructor
** constructor **
# MINYEAR <= year <= MAXYEAR
# 1 <= month <= 12
# 1 <= day <= количество дней данные year (годом) и month (месяцем).
date (year, month, day)
Конструктор класса date может дать ошибку ValueError если переданные значения не являются действительными (вне позволенной рамки).
Константы:
Константы | Описание |
date.min | Представляет первый день в рамках класса date, date(MINYEAR, 1, 1). |
date.max | Представляет последний день в рамках класса date, date(MAXYEAR, 12, 31). |
date.resolution | Малейшая разница между неравными объектами date, timedelta(days=1). |
операторы:
date2 = date1 + timedelta | Прибавляет промежуток времени, timedelta |
date2 = date1 - timedelta | Убавляет промежуток времени, timedelta |
timedelta = date1 - date2 | Убавляет два объекта date. |
date1 < date2 | Сравнивает два объекта date. |
Методы:
Method | Description |
date.replace(year=self.year, month=self.month, day=self.day) | Return a date with the same value, except for the value replaced by the parameter.
For example: d == date(2002, 12, 31), d.replace(day=26) == date(2002, 12, 26). |
date.timetuple() | Return a time.struct_time such as returned by time.localtime(). The hours, minutes and seconds are 0, and the DST flag is -1.
d.timetuple() is equivalent to time.struct_time((d.year, d.month, d.day, 0, 0, 0, d.weekday(), yday, -1)), where yday = d.toordinal() - date(d.year, 1, 1).toordinal() + 1 is the day number within the current year starting with 1 for January 1st. |
date.toordinal() | Return the proleptic Gregorian ordinal of the date, where January 1 of year 1 has ordinal 1.
For any date object d, date.fromordinal(d.toordinal()) == d. |
date.weekday() | Return the day of the week as an integer, where Monday is 0 and Sunday is 6.
For example, date(2002, 12, 4).weekday() == 2, a Wednesday. See also isoweekday(). |
date.isoweekday() | Return the day of the week as an integer (According to ISO standard), where Monday is 1 and Sunday is 7.
For example, date(2002, 12, 4).isoweekday() == 3, a Wednesday. See also weekday(), isocalendar(). |
date.isocalendar() | Return a 3-tuple, (ISO year, ISO week number, ISO weekday). |
date.isoformat() | Return a string representing the date in ISO 8601 format, ‘YYYY-MM-DD’.
For example, date(2002, 12, 4).isoformat() == '2002-12-04'. |
date.__str__() | For a date d, str(d) is equivalent to d.isoformat(). |
date.ctime() | Return a string representing the date, for example date(2002, 12, 4).ctime() == 'Wed Dec 4 00:00:00 2002'.
d.ctime() is equivalent to time.ctime(time.mktime(d.timetuple())). The native C ctime() function conforms to the C standard when it run on flatform. |
date.strftime(format) | Return a string representing the date, In the format given by the parameter. Format codes referring to hours, minutes or seconds will see 0 values.
See more strftime() and strptime() function of time module. |
date.__format__(format) | Same as date.strftime(). |
Pуководства Python
- Документация по поиску Python
- Ветвление операторы в Python
- Руководство Python Function
- Класс и объект в Python
- Наследование и полиморфизм в Python
- Руководство Python Dictionary
- Руководство Python Lists
- Руководство Python Tuples
- Руководство Python Date Time
- Подключиться к базе данных MySQL на Python с помощью PyMySQL
- Руководство по исключению Python
- Руководство Python String
- Введение в Python
- Установить Python в Windows
- Установите Python в Ubuntu
- Установите PyDev для Eclipse
- Соглашения и версии грамматики в Python
- Руководство Python для начинающих
- Петли в Python
Show More