betacode

Руководство Python Date Time

  1. Обзор
  2. Понятие о Ticks
  3. time module
  4. datetime module
  5. datetime.timedelta
  6. datetime.date

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.
Функция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
t1 = i * t2
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().