даты
matplotlib.dates
Matplotlib предоставляет расширенные возможности построения графиков дат, опираясь на возможности python datetime, дополнительных модулей pytz и dateutil.
Формат даты в Matplotlib
Matplotlib представляет даты с помощью чисел с плавающей точкой, указывающих количество дней с 0001-01-01 по UTC плюс 1. Например, 0001-01-01, 06:00 соответствует 1.25, а не 0.25. Значения < 1, т.е. даты до 0001-01-01 UTC, не поддерживаются.
Существует ряд вспомогательных функций для преобразования между объектами datetime и датами Matplotlib:
date2num | Преобразовать объекты datetime в даты Matplotlib. |
num2date | Преобразовать даты Matplotlib в объекты datetime. |
num2timedelta | Преобразовать количество дней в объект timedelta. |
epoch2num | Преобразовать эпоху или последовательность эпох в новый формат даты, т. е. дни с 0001. |
num2epoch | Преобразовать дни с 0001 в эпоху. |
mx2num | Преобразовать экземпляр mx datetime (или последовательность экземпляров mx) в новый формат даты. |
drange | Возвращает последовательность равноудаленных дат Matplotlib. |
Примечание
Так же как и в Python datetime, mpl использует григорианский календарь для всех преобразований между датами и числами с плавающей точкой. Эта практика не является универсальной, и различия в календарях могут привести к путанице в различиях между тем, что Python и mpl предоставляют как количество дней с 0001-01-01, и тем, что дают другие программы и базы данных. Например, US Naval Observatory использует календарь, который переключается с юлианского на григорианский в октябре 1582 года. Следовательно, используя их калькулятор, количество дней между 0001-01-01 и 2006-04-01 составляет 732403, тогда как при использовании григорианского календаря с помощью модуля datetime мы получаем:
In [1]: date(2006, 4, 1).toordinal() - date(1, 1, 1).toordinal() Out[1]: 732401
Все преобразователи дат, тикеров и форматеров Matplotlib учитывают часовой пояс. Если явное время не указано, предполагается rcParam timezone. Если вы хотите использовать пользовательский часовой пояс, передайте экземпляр pytz.timezone с параметром tz в num2date(), plot_date() и любых созданных вами пользовательских тикерах или локаторах дат. См. pytz для получения информации о pytz и обработке часовых поясов.
В этом модуле представлен широкий спектр специализированных и универсальных локаторов и форматеров меток дат. См. matplotlib.ticker для общей информации о локаторах и форматерах меток. Они описаны ниже.
Модуль dateutil предоставляет дополнительный код для обработки метки даты, что позволяет легко размещать метки на любых датах. Примеры см. ниже.
Локаторы меток дат
Большинство локаторов меток дат могут определять одно или несколько значений. Например:
# import constants for the days of the week from matplotlib.dates import MO, TU, WE, TH, FR, SA, SU # tick on mondays every week loc = WeekdayLocator(byweekday=MO, tz=tz) # tick on mondays and saturdays loc = WeekdayLocator(byweekday=(MO, SA))
Кроме того, большинство конструкторов принимают аргумент интервала:
# tick on mondays every second week loc = WeekdayLocator(byweekday=MO, interval=2)
Локатор rrule позволяет выполнять абсолютно общее маркирование дат:
# tick every 5th easter rule = rrulewrapper(YEARLY, byeaster=1, interval=5) loc = RRuleLocator(rule)
Вот все локаторы меток дат:
-
MicrosecondLocator: определение микросекунд -
SecondLocator: определение секунд -
MinuteLocator: определение минут -
HourLocator: определение часов -
DayLocator: определение указанных дней месяца -
WeekdayLocator: определение дней недели, например, ПОН, ВТ -
MonthLocator: определение месяцев, например, 7 для июля -
YearLocator: определение лет, кратных основанию -
RRuleLocator: определение с помощьюmatplotlib.dates.rrulewrapper.rrulewrapper— простой обертка надdateutil.rrule(dateutil), что позволяет указывать метки дат практически произвольным образом. См. пример rrule. -
AutoDateLocator: при автоматическом масштабировании этот класс выбирает лучший локаторDateLocator(например,RRuleLocator) для задания пределов отображения и позиций меток. Если вызвать сinterval_multiples=True, он установит метки, совпадающие с разумными кратными интервалам меток. Например, если интервал составляет 4 часа, он выберет метки в 0, 4, 8 часов и т.д. Это поведение не гарантируется по умолчанию.
Форматировщики меток дат
Вот все форматировщики меток дат:
-
AutoDateFormatter: пытается определить лучший формат. Это наиболее полезно при использовании сAutoDateLocator. -
DateFormatter: используйте строки форматаstrftime() -
IndexDateFormatter: графики дат с неявным индексированием по x.
-
matplotlib.dates.date2num(d)[source] -
Преобразование объектов datetime в даты Matplotlib.
Параметры: -
d : datetime.datetime or numpy.datetime64 or sequences of these
Возвращает: - число с плавающей точкой или последовательность чисел с плавающей точкой
-
Количество дней (дробная часть представляет часы, минуты, секунды, мс) с 0001-01-01 00:00:00 UTC плюс один.
Примечания
Добавление единицы здесь — исторический артефакт. Также обратите внимание, что предполагается григорианский календарь; это не является универсальной практикой. Подробности см. в строке документации модуля.
-
-
matplotlib.dates.num2date(x, tz=None)[source] -
Преобразование дат Matplotlib в объекты
datetime.Параметры: -
x : float or sequence of floats -
Количество дней (дробная часть представляет часы, минуты, секунды) с 0001-01-01 00:00:00 UTC плюс один.
-
tz : string, optional -
Временная зона для x (по умолчанию используется rcparams
timezone).
Возвращает: - `~datetime.datetime` или последовательность `~datetime.datetime`
-
Даты возвращаются в временной зоне tz.
Если x — последовательность, будет возвращена последовательность объектов
datetime.
Примечания
Добавление единицы здесь — исторический артефакт. Также обратите внимание, что предполагается григорианский календарь; это не является универсальной практикой. Подробности см. в строке документации модуля.
-
-
matplotlib.dates.num2timedelta(x)[source] -
Преобразование количества дней в объект
timedelta.Если x — последовательность, будет возвращена последовательность объектов
timedelta.Параметры: -
x : float, sequence of floats -
Количество дней. Дробная часть представляет часы, минуты, секунды.
Возвращает: - `datetime.timedelta` или список `datetime.timedelta`
-
-
matplotlib.dates.drange(dstart, dend, delta)[source] -
Возвращает последовательность дат Matplotlib с равными интервалами.
Даты начинаются с dstart и достигают, но не включают dend. Они разделены интервалом delta.
Параметры: -
dstart, dend : datetime -
Пределы дат.
-
delta : datetime.timedelta -
Интервал дат.
Возвращает: -
drange : numpy.array -
Список чисел с плавающей точкой, представляющий даты Matplotlib.
-
-
matplotlib.dates.epoch2num(e)[source] -
Преобразование эпохи или последовательности эпох в новый формат дат, то есть дней с 0001.
-
matplotlib.dates.num2epoch(d)[source] -
Преобразование дней с 0001 в эпоху. d может быть числом или последовательностью.
-
matplotlib.dates.mx2num(mxdates)[source] -
Преобразование экземпляра mx
datetime(или последовательности экземпляров mx) в новый формат дат.
-
class matplotlib.dates.DateFormatter(fmt, tz=None)[source] -
Базовый класс:
matplotlib.ticker.FormatterПозиция отметки — секунды с эпохи. Используйте строку формата
strftime().Python поддерживает только форматирование
datetimestrftime()для годов, больших 1900. Благодаря Эндрю Дальке (Dalke Scientific Software), внесшему кодstrftime()для включения дат, предшествующих этому году.-
fmt is a strftime() format string; tz is the -
tzinfoэкземпляр.
-
illegal_s = re.compile('((^|[^%])(%%)*%s)')
-
set_tzinfo(tz)[source]
-
strftime(dt, fmt=None)[source] -
Ссылка на документацию для
datetime.datetime.strftime()fmt — строка формата
datetime.datetime.strftime().Предупреждение: Для годов до 1900, в зависимости от текущего языка, возможно, что год, отображаемый с помощью %x, будет неверным. Для годов до 100 %y и %Y будут давать заполненные нулями строки.
-
strftime_pre_1900(dt, fmt=None)[source] -
Вызов time.strftime для годов до 1900, сдвига вперед на кратное 28 лет.
fmt — строка формата
strftime().Dalke: Надеюсь, я правильно рассчитал это. Календарь повторяется каждые 28 лет, за исключением високосных лет в столетиях, кроме високосных годов каждые 400 лет. Но только если вы используете григорианский календарь.
-
-
class matplotlib.dates.IndexDateFormatter(t, fmt, tz=None)[source] -
Базовый класс:
matplotlib.ticker.FormatterИспользуется с
IndexLocatorдля циклического изменения строк формата по индексу.t — последовательность дат (дробные части дней). fmt — строка формата
strftime().
-
class matplotlib.dates.AutoDateFormatter(locator, tz=None, defaultfmt='%Y-%m-%d')[source] -
Базы:
matplotlib.ticker.FormatterЭтот класс пытается определить лучший формат для использования. Это наиболее полезно при использовании с
AutoDateLocator.У AutoDateFormatter есть словарь масштабов, который сопоставляет масштаб тика (расстояние в днях между одним основным тиком) и строку формата. По умолчанию он выглядит так:
self.scaled = { DAYS_PER_YEAR: rcParams['date.autoformat.year'], DAYS_PER_MONTH: rcParams['date.autoformat.month'], 1.0: rcParams['date.autoformat.day'], 1. / HOURS_PER_DAY: rcParams['date.autoformat.hour'], 1. / (MINUTES_PER_DAY): rcParams['date.autoformat.minute'], 1. / (SEC_PER_DAY): rcParams['date.autoformat.second'], 1. / (MUSECONDS_PER_DAY): rcParams['date.autoformat.microsecond'], }Алгоритм выбирает ключ в словаре, который больше или равен текущему масштабу, и использует эту строку формата. Вы можете настроить этот словарь, выполнив следующие действия:
>>> locator = AutoDateLocator() >>> formatter = AutoDateFormatter(locator) >>> formatter.scaled[1/(24.*60.)] = '%M:%S' # only show min and sec
Также можно использовать пользовательский
FuncFormatter. Следующий пример показывает, как использовать пользовательскую функцию форматирования для удаления хвостовых нулей из десятичных секунд и добавления даты к первой метке:>>> def my_format_function(x, pos=None): ... x = matplotlib.dates.num2date(x) ... if pos == 0: ... fmt = '%D %H:%M:%S.%f' ... else: ... fmt = '%H:%M:%S.%f' ... label = x.strftime(fmt) ... label = label.rstrip("0") ... label = label.rstrip(".") ... return label >>> from matplotlib.ticker import FuncFormatter >>> formatter.scaled[1/(24.*60.)] = FuncFormatter(my_format_function)Автоматически форматировать метки дат. По умолчанию используется тот формат, если ни одно из значений в
self.scaledне больше, чем единица, возвращённаяlocator._get_unit().
-
class matplotlib.dates.DateLocator(tz=None)[source] -
Базы:
matplotlib.ticker.LocatorОпределяет расположение тиков при построении графиков дат.
Этот класс наследуется другими локерами и не предназначен для использования самостоятельно.
tz —
tzinfoэкземпляр.-
datalim_to_dt()[source] -
Преобразовать интервал данных оси в объекты datetime.
-
hms0d = {'byhour': 0, 'byminute': 0, 'bysecond': 0}
-
nonsingular(vmin, vmax)[source] -
Учитывая предлагаемые верхнее и нижнее значение, отрегулировать диапазон, если он слишком близок к сингулярному (т. е. диапазон ~0).
-
set_tzinfo(tz)[source] -
Установить информацию о часовом поясе.
-
viewlim_to_dt()[source] -
Преобразует интервал просмотра в объекты datetime.
-
-
class matplotlib.dates.RRuleLocator(o, tz=None)[source] -
Базы:
matplotlib.dates.DateLocator-
autoscale()[source] -
Установить пределы просмотра, чтобы включить диапазон данных.
-
static get_unit_generic(freq)[source]
-
tick_values(vmin, vmax)[source] -
Возвращает значения расположенных тиков, заданных vmin и vmax.
Примечание
Чтобы получить расположение тиков с автоматически заданными значениями vmin и vmax для связанного
axisпросто вызовите экземпляр Локатора:>>> print((type(loc))) <type 'Locator'> >>> print((loc())) [1, 2, 3, 4]
-
-
class matplotlib.dates.AutoDateLocator(tz=None, minticks=5, maxticks=None, interval_multiples=False)[source] -
Базы:
matplotlib.dates.DateLocatorПри автоматическом масштабировании этот класс выбирает лучший
DateLocatorдля установки пределов просмотра и расположения тиков.minticks — минимальное количество тиков, необходимое для выбора типа тиков (годовых, ежемесячных и т. д.).
maxticks — максимальное количество тиков, которое контролирует любые интервалы между тиками (каждый второй, каждый 3-й и т. д.). Для очень точного управления это может быть словарь, сопоставляющий отдельные константы частоты rrule (YEARLY, MONTHLY и т. д.) с собственным максимальным количеством тиков. Это можно использовать для поддержания количества тиков, соответствующих формату, выбранному в
AutoDateFormatter. Любая частота, не указанная в этом словаре, получает значение по умолчанию.tz —
tzinfoэкземпляр.interval_multiples — логическое значение, указывающее, должны ли тики выбираться кратными интервалу. Это зафиксирует тики на «более приятных» позициях. Например, это заставит тики быть в 0, 6, 12, 18 часах при часовом тике с интервалом в 6 часов.
У AutoDateLocator есть словарь интервалов, который сопоставляет частоту тика (константу из dateutil.rrule) и разрешённое кратное для этого тика. По умолчанию он выглядит так:
self.intervald = { YEARLY : [1, 2, 4, 5, 10, 20, 40, 50, 100, 200, 400, 500, 1000, 2000, 4000, 5000, 10000], MONTHLY : [1, 2, 3, 4, 6], DAILY : [1, 2, 3, 7, 14], HOURLY : [1, 2, 3, 4, 6, 12], MINUTELY: [1, 5, 10, 15, 30], SECONDLY: [1, 5, 10, 15, 30], MICROSECONDLY: [1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000], }Интервал используется для указания кратных значений, которые подходят для частоты тиков. Например, каждые 7 дней уместны для ежедневных тиков, но для минут/секунд более уместными будут 15 или 30. Вы можете настроить этот словарь, выполнив:
locator = AutoDateLocator() locator.intervald[HOURLY] = [3] # only show every 3 hours
-
autoscale()[source] -
Попробовать выбрать разумные пределы просмотра.
-
get_locator(dmin, dmax)[source] -
Выбрать лучший локатор на основе расстояния.
-
nonsingular(vmin, vmax)[source] -
Учитывая предлагаемые верхнее и нижнее значение, отрегулировать диапазон, если он слишком близок к сингулярному (т. е. диапазон ~0).
-
refresh()[source] -
Обновить внутреннюю информацию на основе текущих пределов.
-
set_axis(axis)[source]
-
tick_values(vmin, vmax)[source] -
Возвращает значения расположенных тиков, заданных vmin и vmax.
Примечание
Чтобы получить расположение тиков с автоматически заданными значениями vmin и vmax для связанного
axisпросто вызовите экземпляр Локатора:>>> print((type(loc))) <type 'Locator'> >>> print((loc())) [1, 2, 3, 4]
-
-
class matplotlib.dates.YearLocator(base=1, month=1, day=1, tz=None)[source] -
Базы:
matplotlib.dates.DateLocatorСоздаёт тики на заданный день каждого года, который является кратным основанию.
Примеры:
# Tick every year on Jan 1st locator = YearLocator() # Tick every 5 years on July 4th locator = YearLocator(5, month=7, day=4)
Помечает годы, кратные основанию, на заданный месяц и день (по умолчанию 1 января).
-
autoscale()[source] -
Установить пределы просмотра, чтобы включить диапазон данных.
-
tick_values(vmin, vmax)[source] -
Возвращает значения расположенных тиков, заданных vmin и vmax.
Примечание
Чтобы получить расположение тиков с автоматически заданными значениями vmin и vmax для связанного
axisпросто вызовите экземпляр Локатора:>>> print((type(loc))) <type 'Locator'> >>> print((loc())) [1, 2, 3, 4]
-
-
class matplotlib.dates.MonthLocator(bymonth=None, bymonthday=1, interval=1, tz=None)[source] -
Bases:
matplotlib.dates.RRuleLocatorСоздаёт метки на каждом месяце, например, 1, 3, 12.
Помечает каждый месяц в bymonth; bymonth может быть целым числом или последовательностью. По умолчанию
range(1,13), то есть каждый месяц.interval — интервал между каждой итерацией. Например, если
interval=2, помечается каждое второе значение.
-
class matplotlib.dates.WeekdayLocator(byweekday=1, interval=1, tz=None)[source] -
Bases:
matplotlib.dates.RRuleLocatorСоздаёт метки на каждом дне недели.
Помечает каждый день недели в byweekday; byweekday может быть числом или последовательностью.
Элементы byweekday должны быть одним из MO, TU, WE, TH, FR, SA, SU, константами из
dateutil.rrule, которые были импортированы в пространство имёнmatplotlib.dates.interval указывает количество недель, которые нужно пропустить. Например,
interval=2отображает каждый второй.
-
class matplotlib.dates.DayLocator(bymonthday=None, interval=1, tz=None)[source] -
Bases:
matplotlib.dates.RRuleLocatorСоздаёт метки на каждом дне месяца. Например, 1, 15, 30.
Помечает каждый день в bymonthday; bymonthday может быть целым числом или последовательностью.
По умолчанию метки устанавливаются для каждого дня месяца:
bymonthday=range(1,32)
-
class matplotlib.dates.HourLocator(byhour=None, interval=1, tz=None)[source] -
Bases:
matplotlib.dates.RRuleLocatorСоздаёт метки на каждом часу.
Помечает каждый час в byhour; byhour может быть целым числом или последовательностью. По умолчанию метки устанавливаются для каждого часа:
byhour=range(24)interval — интервал между каждой итерацией. Например, если
interval=2, помечается каждое второе значение.
-
class matplotlib.dates.MinuteLocator(byminute=None, interval=1, tz=None)[source] -
Bases:
matplotlib.dates.RRuleLocatorСоздаёт метки на каждой минуте.
Помечает каждую минуту в byminute; byminute может быть целым числом или последовательностью. По умолчанию метки устанавливаются для каждой минуты:
byminute=range(60)interval — интервал между каждой итерацией. Например, если
interval=2, помечается каждое второе значение.
-
class matplotlib.dates.SecondLocator(bysecond=None, interval=1, tz=None)[source] -
Bases:
matplotlib.dates.RRuleLocatorСоздаёт метки на каждой секунде.
Помечает каждую секунду в bysecond; bysecond может быть целым числом или последовательностью. По умолчанию метки устанавливаются для каждой секунды:
bysecond = range(60)interval — интервал между каждой итерацией. Например, если
interval=2, помечается каждое второе значение.
-
class matplotlib.dates.MicrosecondLocator(interval=1, tz=None)[source] -
Bases:
matplotlib.dates.DateLocatorСоздаёт метки с интервалом в одну или несколько микросекунд.
Примечание
Из-за представления времени в виде дробного числа дней с 0001-01-01 UTC (плюс 1), построение данных с разрешением по микросекундам не работает хорошо с текущими датами.
Если вам нужны графики с разрешением по микросекундам, настоятельно рекомендуется использовать числа с плавающей точкой для секунд, а не представления типа datetime.
Если вы действительно должны использовать datetime.datetime() или подобное и все еще нуждаетесь в точности до микросекунд, ваш единственный шанс — использовать очень ранние годы; рекомендуется использовать год 0001.
interval — интервал между каждой итерацией. Например, если
interval=2, помечается каждая вторая микросекунда.-
set_axis(axis)[source]
-
set_data_interval(vmin, vmax)[source]
-
set_view_interval(vmin, vmax)[source]
-
tick_values(vmin, vmax)[source] -
Возвращает значения размеченных меток, заданных vmin и vmax.
Примечание
Чтобы получить метки с автоматически определенными значениями vmin и vmax для связанного
axisпросто вызовите экземпляр Locator:>>> print((type(loc))) <type 'Locator'> >>> print((loc())) [1, 2, 3, 4]
-
-
class matplotlib.dates.rrule(freq, dtstart=None, interval=1, wkst=None, count=None, until=None, bysetpos=None, bymonth=None, bymonthday=None, byyearday=None, byeaster=None, byweekno=None, byweekday=None, byhour=None, byminute=None, bysecond=None, cache=False)[source] -
Базовые классы:
dateutil.rrule.rrulebaseЭто основа операции rrule. Она принимает все ключевые слова, определённые в RFC, в качестве параметров конструктора (кроме byday, которое было переименовано в byweekday), и ещё больше. Прототип конструктора:
rrule(freq)
Где freq должно быть одним из YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY или SECONDLY.
Примечание
Согласно RFC, раздел 3.3.10, экземпляры повторения, попадающие на недействительные даты и времена, игнорируются, а не приводятся к соответствию:
Правила повторения могут генерировать экземпляры повторения с недействительной датой (например, 30 февраля) или несуществующим местным временем (например, 1:30 утра в день, когда местное время переведено вперёд на час в 1:00 утра). Такие экземпляры повторения ДОЛЖНЫ быть проигнорированы и НЕ ДОЛЖНЫ учитываться в качестве части набора повторений.Это может привести к возможному неожиданному поведению, например, когда начальная дата приходится на конец месяца:
>>> from dateutil.rrule import rrule, MONTHLY >>> from datetime import datetime >>> start_date = datetime(2014, 12, 31) >>> list(rrule(freq=MONTHLY, count=4, dtstart=start_date)) ... [datetime.datetime(2014, 12, 31, 0, 0), datetime.datetime(2015, 1, 31, 0, 0), datetime.datetime(2015, 3, 31, 0, 0), datetime.datetime(2015, 5, 31, 0, 0)]
Кроме того, она поддерживает следующие ключевые аргументы:
Параметры: - dtstart -- Начало повторения. Помимо того, что является основой для повторения, отсутствующие параметры в окончательных экземплярах повторения также будут извлечены из этой даты. Если не задано, будет использовано datetime.now().
- interval -- Интервал между каждой итерацией freq. Например, при использовании YEARLY, интервал 2 означает раз в два года, но при HOURLY, это означает раз в два часа. Значение по умолчанию - 1.
- wkst -- День начала недели. Должно быть одним из констант MO, TU, WE или целым числом, определяющим первый день недели. Это повлияет на повторения, основанные на еженедельных периодах. Значение по умолчанию для начала недели берется из calendar.firstweekday(), и может быть изменено с помощью calendar.setfirstweekday().
-
count --
Сколько произойдёт повторений.
Примечание
Начиная с версии 2.5.0, использование ключевого слова
untilвместе с ключевым словомcountустарело в соответствии с RFC-5545, раздел 3.3.10. -
until --
Если задано, это должен быть экземпляр datetime, который укажет предел повторения. Последнее повторение в правиле — это наибольшая дата и время, которая меньше или равна значению, указанному в параметре
until.Примечание
Начиная с версии 2.5.0, использование ключевого слова
untilвместе с ключевым словомcountустарело в соответствии с RFC-5545, раздел 3.3.10. - bysetpos -- Если задано, это должно быть целое число или последовательность целых чисел, положительных или отрицательных. Каждое заданное целое число будет указывать номер повторения, соответствующий n-му повторению правила внутри периода частоты. Например, bysetpos -1 в сочетании с частотой MONTHLY и byweekday (MO, TU, WE, TH, FR) даст последний рабочий день каждого месяца.
- bymonth -- Если задано, это должно быть целое число или последовательность целых чисел, означающие месяцы для применения повторения.
- bymonthday -- Если задано, это должно быть целое число или последовательность целых чисел, означающие числа месяца для применения повторения.
- byyearday -- Если задано, это должно быть целое число или последовательность целых чисел, означающие дни года для применения повторения.
- byeaster -- Если задано, это должно быть целое число или последовательность целых чисел, положительных или отрицательных. Каждое целое число определяет смещение от Пасхи. Передача смещения 0 в byeaster даст саму Пасху. Это расширение спецификации RFC.
- byweekno -- Если задано, это должно быть целое число или последовательность целых чисел, означающие номера недель для применения повторения. Номера недель имеют смысл, описанный в ISO8601, то есть первая неделя года — это та, которая содержит как минимум четыре дня нового года.
- byweekday -- Если задано, это должно быть целое число (0 == MO), последовательность целых чисел, одна из констант дня недели (MO, TU и т. д.) или последовательность этих констант. При задании эти переменные определят дни недели, на которые будет применяться повторение. Также можно использовать аргумент n для экземпляров дня недели, что будет означать n-е повторение этого дня недели в периоде. Например, с MONTHLY или с YEARLY и BYMONTH, используя FR(+1) в byweekday, будет указано первое пятница месяца, в котором происходит повторение. Обратите внимание, что в документации RFC это указано как BYDAY, но было переименовано, чтобы избежать неоднозначности этого ключевого слова.
- byhour -- Если задано, это должно быть целое число или последовательность целых чисел, означающие часы для применения повторения.
- byminute -- Если задано, это должно быть целое число или последовательность целых чисел, означающие минуты для применения повторения.
- bysecond -- Если задано, это должно быть целое число или последовательность целых чисел, означающие секунды для применения повторения.
- cache -- Если задано, это должно быть булево значение, указывающее на включение или отключение кэширования результатов. Если вы будете использовать тот же экземпляр rrule несколько раз, включение кэширования значительно повысит производительность.
-
replace(**kwargs)[source] -
Возвращает новое rrule с теми же атрибутами, кроме тех, для которых заданы новые значения в указанных ключевых аргументах.
-
class matplotlib.dates.relativedelta(dt1=None, dt2=None, years=0, months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0, seconds=0, microseconds=0, year=None, month=None, day=None, weekday=None, yearday=None, nlyearday=None, hour=None, minute=None, second=None, microsecond=None)[source] -
Базовые классы:
objectТип relativedelta основан на спецификации отличной работы M.-A. Lemburg в его mx.DateTime расширении. Однако обратите внимание, что этот тип НЕ реализует тот же алгоритм, что и его работа. Не ожидайте, что он будет вести себя так же, как mx.DateTime.
Существует два способа создания экземпляра relativedelta. Первый — передача ему двух классов date/datetime:
relativedelta(datetime1, datetime2)
Второй — передача любого количества следующих ключевых аргументов:
relativedelta(arg1=x,arg2=y,arg3=z...) year, month, day, hour, minute, second, microsecond: Absolute information (argument is singular); adding or subtracting a relativedelta with absolute information does not perform an arithmetic operation, but rather REPLACES the corresponding value in the original datetime with the value(s) in relativedelta. years, months, weeks, days, hours, minutes, seconds, microseconds: Relative information, may be negative (argument is plural); adding or subtracting a relativedelta with relative information performs the corresponding aritmetic operation on the original datetime value with the information in the relativedelta. weekday: One of the weekday instances (MO, TU, etc). These instances may receive a parameter N, specifying the Nth weekday, which could be positive or negative (like MO(+1) or MO(-2). Not specifying it is the same as specifying +1. You can also use an integer, where 0=MO. Notice that if the calculated date is already Monday, for example, using MO(1) or MO(-1) won't change the day. leapdays: Will add given days to the date found, if year is a leap year, and the date found is post 28 of february. yearday, nlyearday: Set the yearday or the non-leap year day (jump leap days). These are converted to day/month/leapdays information.Существуют относительные и абсолютные формы ключевых аргументов. Множественное число — относительное, единственное — абсолютное. Для каждого аргумента в порядке ниже, сначала применяется абсолютная форма (устанавливая каждый атрибут в это значение), а затем относительная форма (добавляя значение к атрибуту).
Порядок атрибутов, рассматриваемых при добавлении этого relativedelta к datetime:
- Год
- Месяц
- День
- Часы
- Минуты
- Секунды
- Микросекунды
Наконец, применяется weekday, используя правило, описанное выше.
Например
>>> dt = datetime(2018, 4, 9, 13, 37, 0) >>> delta = relativedelta(hours=25, day=1, weekday=MO(1)) datetime(2018, 4, 2, 14, 37, 0)
Сначала день устанавливается в 1 (первое число месяца), затем добавляется 25 часов, чтобы получить 2 день и 14 час, а затем применяется weekday, но так как 2 уже понедельник, никакого эффекта не будет.
-
normalized()[source] -
Возвращает версию этого объекта, представленную только целочисленными значениями для относительных атрибутов.
>>> relativedelta(days=1.5, hours=2).normalized() relativedelta(days=1, hours=14)
Возвращает: Возвращает объект dateutil.relativedelta.relativedelta.
-
weeks
-
matplotlib.dates.seconds(s)[source] -
Возвращает секунды как дни.
-
matplotlib.dates.minutes(m)[source] -
Возвращает минуты как дни.
-
matplotlib.dates.hours(h)[source] -
Возвращает часы как дни.
-
matplotlib.dates.weeks(w)[source] -
Возвращает недели как дни.
© 2012–2018 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/2.2.3/api/dates_api.html