Spec-Zone.ru › Matplotlib 3.1

matplotlib.dates

Inheritance diagram of matplotlib.dates

Matplotlib предоставляет расширенные возможности построения графиков дат, опираясь на возможности модуля python datetime и модуля dateutil.

Формат дат в Matplotlib

Matplotlib представляет даты с помощью чисел с плавающей точкой, указывающих количество дней с 0001-01-01 UTC плюс 1. Например, 0001-01-01 06:00 соответствует 1.25, а не 0.25. Значения < 1, то есть даты до 0001-01-01 UTC, не поддерживаются.

Существует ряд вспомогательных функций для преобразования между объектами datetime и датами Matplotlib:

datestr2num Преобразует строку даты в datenum, используя dateutil.parser.parse().
date2num Преобразует объекты datetime в даты Matplotlib.
num2date Преобразует даты Matplotlib в объекты datetime.
num2timedelta Преобразует количество дней в объект timedelta.
epoch2num Преобразует эпоху или последовательность эпох в новый формат даты, то есть количество дней с 0001.
num2epoch Преобразует количество дней с 0001 в эпоху.
mx2num Преобразует экземпляр mx (или последовательность экземпляров 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. Если вы хотите использовать пользовательский часовой пояс, передайте экземпляр datetime.tzinfo с параметром tz в num2date(), plot_date() и любых пользовательских метках или локаторах дат.

В этом модуле предоставляется широкий спектр специфических и общих локаторов и форматировщиков меток дат. См. 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's dateutil.rrule, позволяющей задавать почти любые метки дат. См. пример rrule.
  • AutoDateLocator: при автоматическом масштабировании этот класс выбирает лучший локатор DateLocator (например, RRuleLocator) для установки пределов просмотра и расположения меток. Если вызван с interval_multiples=True, он расположит метки с разумными кратными интервалам. Например, если интервал составляет 4 часа, он выберет часы 0, 4, 8 и т.д. в качестве меток. Это поведение не гарантируется по умолчанию.

Форматировщики меток дат

Вот все форматировщики меток дат:

  • AutoDateFormatter: пытается определить лучший формат для использования. Это наиболее полезно при использовании с AutoDateLocator.
  • ConciseDateFormatter: также пытается определить лучший формат для использования и сделать формат максимально компактным, сохраняя при этом полную информацию о дате. Это наиболее полезно при использовании с AutoDateLocator.
  • DateFormatter: использовать strftime() строки формата
  • IndexDateFormatter: графики дат с неявным индексированием x.
matplotlib.dates.datestr2num(d, default=None) [исходный код]

Преобразование строки даты в datenum с использованием dateutil.parser.parse().

Параметры:
d : string or sequence of strings

Даты для преобразования.

default : datetime instance, optional

По умолчанию дата для использования, когда поля отсутствуют в d.

matplotlib.dates.date2num(d) [исходный код]

Преобразование объектов 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) [исходный код]

Преобразование дат Matplotlib в объекты datetime.

Параметры:
x : float or sequence of floats

Количество дней (дробная часть представляет часы, минуты, секунды) с 0001-01-01 00:00:00 UTC, плюс один.

tz : string, optional

Временная зона x (по умолчанию rcparams timezone).

Возвращает:
datetime or sequence of datetime

Даты возвращаются во временной зоне tz.

Если x является последовательностью, будет возвращена последовательность объектов datetime.

Примечания

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

matplotlib.dates.num2timedelta(x) [исходный код]

Преобразование числа дней в объект timedelta.

Если x является последовательностью, будет возвращена последовательность объектов timedelta.

Параметры:
x : float, sequence of floats

Количество дней. Дробная часть представляет часы, минуты, секунды.

Возвращает:
datetime.timedelta or list[datetime.timedelta]
matplotlib.dates.drange(dstart, dend, delta) [исходный код]

Возвращает последовательность равномерно распределенных дат Matplotlib.

Даты начинаются с dstart и доходят до, но не включая dend. Они распределены с шагом delta.

Параметры:
dstart, dend : datetime

Границы дат.

delta : datetime.timedelta

Шаг между датами.

Возвращает:
drange : numpy.array

Список чисел с плавающей точкой, представляющих даты Matplotlib.

matplotlib.dates.epoch2num(e) [исходный код]

Преобразование эпохи или последовательности эпох в новый формат даты, то есть количество дней с 0001.

matplotlib.dates.num2epoch(d) [исходный код]

Преобразование дней с 0001 в эпоху. d может быть числом или последовательностью.

matplotlib.dates.mx2num(mxdates) [исходный код]

Преобразование экземпляра mx datetime (или последовательности экземпляров mx) в новый формат даты.

class matplotlib.dates.DateFormatter(fmt, tz=None) [исходный код]

Базовые классы: matplotlib.ticker.Formatter

Форматирование отметки (в секундах с начала эпохи) с помощью строки формата strftime.

Параметры:
fmt : str

Строка формата strftime

tz : tzinfo
illegal_s = re.compile('((^|[^%])(%%)*%s)')
set_tzinfo(self, tz) [исходный код]
strftime(self, dt, fmt=None) [исходный код]

[Устаревшее] См. документацию по datetime.datetime.strftime()

fmt — это строка формата datetime.datetime.strftime().

Предупреждение: Для лет до 1900 года, в зависимости от текущего языка, возможно, что год, отображаемый с помощью %x, будет неверным. Для лет до 100 %y и %Y будут давать заполненные нулями строки.

Примечания

Устарело начиная с версии 3.0.

strftime_pre_1900(self, dt, fmt=None) [исходный код]

[Устаревшее] Вызов time.strftime для лет до 1900 года путем сдвига вперед на кратное 28 лет.

fmt — это строка формата strftime().

Dalke: Надеюсь, я правильно произвел эти вычисления. Календарь повторяется каждые 28 лет, за исключением високосных лет столетия, за исключением високосных лет 400-летнего цикла. Но только если вы используете григорианский календарь.

Примечания

Устарело начиная с версии 3.0.

class matplotlib.dates.ConciseDateFormatter(locator, tz=None, formats=None, offset_formats=None, zero_formats=None, show_offset=True) [исходный код]

Базовые классы: matplotlib.ticker.Formatter

Этот класс пытается определить лучший формат для даты и сделать его максимально компактным, но при этом полным. Это наиболее полезно при использовании с AutoDateLocator:

>>> locator = AutoDateLocator()
>>> formatter = ConciseDateFormatter(locator)
Параметры:
locator : ticker.Locator

Локатор, используемый этой осью.

tz : string, optional

Передаётся в dates.date2num.

formats : list of 6 strings, optional

Строки формата для 6 уровней метки делений: в основном годы, месяцы, дни, часы, минуты и секунды. Строки используют те же коды формата, что и strftime. Значение по умолчанию — ['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f']

zero_formats : list of 6 strings, optional

Строки формата для меток делений, которые являются «нулями» для данного уровня деления. Например, если большинство делений — месяцы, деления около 1 января 2005 года будут помечены «дек», «2005», «фев». Значение по умолчанию — ['', '%Y', '%b', '%b-%d', '%H:%M', '%H:%M']

offset_formats : list of 6 strings, optional

Строки формата для 6 уровней, которые применяются к строке «смещения», расположенной справа на оси x или сверху на оси y. В сочетании с метками делений это должно полностью указать дату. По умолчанию:

['', '%Y', '%Y-%b', '%Y-%b-%d', '%Y-%b-%d', '%Y-%b-%d %H:%M']
show_offset : bool

Показывать ли смещение. Значение по умолчанию — True.

Примеры

См. Форматирование меток делений даты с помощью ConciseDateFormatter

(Исходный код, png, pdf)

../_images/dates_api-1.png

Автоматическое форматирование меток даты. Значение по умолчанию используется для формирования начальной строки, а затем удаляются избыточные элементы.

format_data_short(self, value) [исходный код]

Возвращает короткую строковую версию значения деления.

По умолчанию используется длинное значение, независимое от позиции.

format_ticks(self, values) [исходный код]

Возвращает метки делений для всех делений сразу.

get_offset(self) [исходный код]
class matplotlib.dates.IndexDateFormatter(t, fmt, tz=None) [исходный код]

Базовые классы: matplotlib.ticker.Formatter

Используйте с IndexLocator для циклического форматирования строк по индексу.

t — последовательность дат (числа с плавающей точкой дней). fmt — strftime() строка формата.

class matplotlib.dates.AutoDateFormatter(locator, tz=None, defaultfmt='%Y-%m-%d') [исходный код]

Базовые классы: 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) [исходный код]

Базовый класс: matplotlib.ticker.Locator

Определяет расположение делений при построении графиков дат.

Этот класс наследуется другими локаторами и не предназначен для самостоятельного использования.

tz — экземпляр tzinfo.

datalim_to_dt(self) [исходный код]

Преобразует интервал данных оси в объекты datetime.

hms0d = {'byhour': 0, 'byminute': 0, 'bysecond': 0}
nonsingular(self, vmin, vmax) [исходный код]

Корректирует заданные верхний и нижний пределы, если диапазон слишком близок к вырожденному (то есть диапазон составляет примерно 0).

set_tzinfo(self, tz) [исходный код]

Устанавливает информацию о часовом поясе.

viewlim_to_dt(self) [исходный код]

Преобразует интервал просмотра в объекты datetime.

class matplotlib.dates.RRuleLocator(o, tz=None) [исходный код]

Базовый класс: matplotlib.dates.DateLocator

autoscale(self) [исходный код]

Устанавливает пределы просмотра, включая диапазон данных.

static get_unit_generic(freq) [исходный код]
tick_values(self, vmin, vmax) [исходный код]

Возвращает значения делений, заданные параметрами 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=True) [исходный код]

Базовый класс: matplotlib.dates.DateLocator

При автоматическом масштабировании этот класс выбирает оптимальный DateLocator для определения пределов отображения и расположения делений.

minticks — минимальное количество делений, используемое для выбора типа делений (годовые, ежемесячные и т. д.).

maxticks — максимальное количество делений, которое определяет интервалы между делениями (каждое второе, каждое третье и т. д.). Для более точного управления можно передать словарь, сопоставляющий отдельные константы частоты rrule (YEARLY, MONTHLY и т. д.) с соответствующим максимальным количеством делений. Это позволяет поддерживать подходящее количество делений для формата, выбранного в AutoDateFormatter. Для частот, не указанных в словаре, используется значение по умолчанию.

tz — объект tzinfo.

interval_multiples — логическое значение, указывающее, должны ли деления располагаться на кратных интервалах. Это позволит закрепить деления на «более удобных» позициях. Например, при разметке часов с интервалом 6 часов деления будут установлены на 0, 6, 12 и 18 часов.

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(self) [исходный код]

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

get_locator(self, dmin, dmax) [исходный код]

Выбирает лучший локатор на основе диапазона.

nonsingular(self, vmin, vmax) [исходный код]

Корректирует предлагаемые верхний и нижний пределы, если диапазон слишком близок к вырожденному (то есть диапазон составляет примерно 0).

refresh(self) [исходный код]

Обновляет внутреннюю информацию на основе текущих пределов.

set_axis(self, axis) [исходный код]
tick_values(self, vmin, vmax) [исходный код]

Возвращает значения делений с учётом 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) [исходный код]

Базовый класс: 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(self) [исходный код]

Устанавливает пределы отображения так, чтобы они включали диапазон данных.

tick_values(self, vmin, vmax) [исходный код]

Возвращает значения делений с учётом 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) [исходный код]

Базовый класс: matplotlib.dates.RRuleLocator

Создаёт деления в указанные дни каждого месяца, например 1, 3, 12.

Помечает каждый месяц, указанный в bymonth; bymonth может быть целым числом или последовательностью. По умолчанию range(1,13), то есть каждый месяц.

interval — интервал между повторениями. Например, если interval=2, отмечается каждое второе повторение.

class matplotlib.dates.WeekdayLocator(byweekday=1, interval=1, tz=None) [исходный код]

Базовый класс: 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) [исходный код]

Базовый класс: matplotlib.dates.RRuleLocator

Создаёт деления для каждого дня месяца, например 1, 15, 30.

Помечает дни, указанные в bymonthday; bymonthday может быть целым числом или последовательностью.

По умолчанию деления создаются для каждого дня месяца: bymonthday=range(1,32)

class matplotlib.dates.HourLocator(byhour=None, interval=1, tz=None) [исходный код]

Базовый класс: matplotlib.dates.RRuleLocator

Создаёт деления для каждого часа.

Помечает часы, указанные в byhour; byhour может быть целым числом или последовательностью. По умолчанию деления создаются для каждого часа: byhour=range(24)

interval — интервал между повторениями. Например, если interval=2, отмечается каждое второе повторение.

class matplotlib.dates.MinuteLocator(byminute=None, interval=1, tz=None) [исходный код]

Базовый класс: matplotlib.dates.RRuleLocator

Создаёт деления для каждой минуты.

Помечает минуты, указанные в byminute; byminute может быть целым числом или последовательностью. По умолчанию деления создаются для каждой минуты: byminute=range(60)

interval — интервал между повторениями. Например, если interval=2, отмечается каждое второе повторение.

class matplotlib.dates.SecondLocator(bysecond=None, interval=1, tz=None) [исходный код]

Базовый класс: matplotlib.dates.RRuleLocator

Создаёт деления для каждой секунды.

Помечает секунды, указанные в bysecond; bysecond может быть целым числом или последовательностью. По умолчанию деления создаются для каждой секунды: bysecond = range(60)

interval — интервал между повторениями. Например, если interval=2, отмечается каждое второе повторение.

class matplotlib.dates.MicrosecondLocator(interval=1, tz=None) [исходный код]

Базовый класс: matplotlib.dates.DateLocator

Создаёт деления с регулярным интервалом в одну или несколько микросекунд.

Примечание

Из-за представления времени числами с плавающей точкой в днях, начиная с 0001-01-01 UTC (плюс 1), построение графиков по данным с микросекундным разрешением плохо работает для современных дат.

Если вам нужны графики с микросекундным разрешением, настоятельно рекомендуется использовать значения с плавающей точкой в секундах, а не представление времени типа datetime.

Если вам необходимо использовать datetime.datetime() или аналогичный тип и при этом сохранить точность до микросекунд, единственный выход — использовать очень ранние годы; рекомендуется год 0001.

interval — интервал между итерациями. Например, если interval=2, помечается каждая вторая микросекунда.

set_axis(self, axis) [исходный код]
set_data_interval(self, vmin, vmax) [исходный код]
set_view_interval(self, vmin, vmax) [исходный код]
tick_values(self, vmin, vmax) [исходный код]

Возвращает значения делений, заданные параметрами vmin и vmax.

Примечание

Чтобы получить расположение делений с автоматически определёнными vmin и vmax для соответствующего axis, просто вызовите экземпляр локатора:

>>> 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) [исходный код]

Базовые классы: dateutil.rrule.rrulebase

Это основа операции rrule. Она принимает в качестве параметров конструктора все ключевые слова, определённые в RFC (кроме byday, переименованного в byweekday), а также многие другие. Прототип конструктора:

rrule(freq)

Параметр freq должен принимать одно из значений YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY или SECONDLY.

Примечание

Согласно разделу 3.3.10 RFC, экземпляры повторений, приходящиеся на недопустимые даты и время, игнорируются, а не корректируются принудительно:

Правила повторения могут генерировать экземпляры повторений с недопустимой датой (например, 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))
... # doctest: +NORMALIZE_WHITESPACE
[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 значение interval, равное 2, означает повторение раз в два года, а для HOURLY — раз в два часа. Значение по умолчанию — 1.
  • wkst — день начала недели. Должен быть одной из констант MO, TU, WE или целым числом, обозначающим первый день недели. Это влияет на повторения, основанные на недельных периодах. По умолчанию день начала недели берётся из calendar.firstweekday(); его можно изменить с помощью calendar.setfirstweekday().
  • count —

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

    Примечание

    Начиная с версии 2.5.0 использование ключевого слова until вместе с count считается устаревшим, чтобы обеспечить полное соответствие dateutil спецификации RFC-5545, разделу 3.3.10. Поэтому until и count не должны использоваться в одном вызове rrule.

  • until —

    Если указан, должен быть экземпляром datetime, определяющим верхнюю границу повторения. Последнее повторение в правиле — самая поздняя дата, которая меньше или равна значению, указанному в параметре until.

    Примечание

    Начиная с версии 2.5.0 использование ключевого слова until вместе с count считается устаревшим, чтобы обеспечить полное соответствие dateutil спецификации RFC-5545, разделу 3.3.10. Поэтому until и count не должны использоваться в одном вызове rrule.

  • и т. д.
replace(self, **kwargs) [исходный код]

Возвращает новый 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) [исходный код]

Базовый класс: object

Тип relativedelta предназначен для применения к существующей дате или времени и может заменять отдельные компоненты этой даты или времени либо представлять временной интервал.

Он основан на превосходной спецификации М.-А. Лембурга, реализованной в его расширении 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) available in the
    relativedelta module. 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. This argument is always
    relative e.g. if the calculated date is already Monday, using MO(1)
    or MO(-1) won't change the day. To effectively make it absolute, use
    it in combination with the day argument (e.g. day=1, MO(1) for first
    Monday of the month).

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 к дате или времени, обрабатываются в следующем порядке:

  1. Год
  2. Месяц
  3. День
  4. Часы
  5. Минуты
  6. Секунды
  7. Микросекунды

В конце применяется день недели с использованием правила, описанного выше.

Например:

>>> from datetime import datetime
>>> from dateutil.relativedelta import relativedelta, MO
>>> dt = datetime(2018, 4, 9, 13, 37, 0)
>>> delta = relativedelta(hours=25, day=1, weekday=MO(1))
>>> dt + delta
datetime.datetime(2018, 4, 2, 14, 37)

Сначала день устанавливается в 1 (первое число месяца), затем добавляются 25 часов, чтобы перейти ко 2-му дню и 14-му часу. Наконец, применяется день недели, но поскольку 2-е число уже приходится на понедельник, это не оказывает никакого эффекта.

normalized(self) [исходный код]

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

>>> relativedelta(days=1.5, hours=2).normalized()
relativedelta(days=+1, hours=+14)
Возвращает: Возвращает объект dateutil.relativedelta.relativedelta.
weeks
matplotlib.dates.seconds(s) [исходный код]

[Устарело] Возвращает секунды в виде дней.

Примечания

Устарело начиная с версии 3.1.

matplotlib.dates.minutes(m) [исходный код]

[Устарело] Возвращает минуты в виде дней.

Примечания

Устарело начиная с версии 3.1.

matplotlib.dates.hours(h) [исходный код]

[Устарело] Возвращает часы в виде дней.

Примечания

Устарело начиная с версии 3.1.

matplotlib.dates.weeks(w) [исходный код]

[Устарело] Возвращает недели в виде дней.

Примечания

Устарело начиная с версии 3.1.

© 2012–2018 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.1.1/api/dates_api.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API