Даты
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:
date2num | Преобразовать объекты datetime в даты Matplotlib. |
num2date | Преобразовать даты Matplotlib в объекты datetime. |
num2timedelta | Преобразовать количество дней в объект timedelta. |
epoch2num | Преобразовать эпоху или последовательность эпох в новый формат дат, то есть количество дней с 0001. |
num2epoch | Преобразовать количество дней с 0001 в эпоху. |
mx2num | Преобразовать экземпляр mx datetime (или последовательность экземпляров mx) в новый формат дат. |
drange | Возвращает последовательность дат Matplotlib с равномерным шагом. |
Примечание
Как и в Python datetime, mpl использует григорианский календарь для всех преобразований между датами и числами с плавающей точкой. Эта практика не является универсальной, и различия в календарях могут вызвать путаницу между количеством дней с 0001-01-01, которое дает Python и mpl, и количеством дней, полученных другими программами и базами данных. Например, Морской обсерватории США использует календарь, который переключается с юлианского на григорианский в октябре 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: определение годов, кратных base -
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 (по умолчанию соответствует параметрам rc
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] -
Устарело начиная с версии 3.0: Функция strftime устарела в Matplotlib 3.0 и будет удалена в 3.2.
См. документацию для
datetime.datetime.strftime()fmt — строка формата
datetime.datetime.strftime().Предупреждение: Для лет до 1900, в зависимости от текущего локали, возможно, что год, отображаемый с помощью %x, будет неверным. Для лет до 100, %y и %Y будут давать заполненные нулями строки.
-
strftime_pre_1900(dt, fmt=None)[source] -
Устарело начиная с версии 3.0: Функция strftime_pre_1900 устарела в Matplotlib 3.0 и будет удалена в 3.2.
- Вызов time.strftime для лет до 1900, сдвигая
-
вперед на кратное 28 лет.
fmt — строка формата
strftime().Дальке: Надеюсь, я правильно выполнил эти вычисления. Каждый 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=True)[source] -
Базы:
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()[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] -
Базовые классы:
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] -
Базовые классы:
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] -
Базовые классы:
matplotlib.dates.RRuleLocatorСоздаёт отметки на каждом дне месяца. Например, 1, 15, 30.
Помечает каждый день в bymonthday; bymonthday может быть целым числом или последовательностью.
По умолчанию отметки ставятся на каждый день месяца:
bymonthday=range(1,32)
-
class matplotlib.dates.HourLocator(byhour=None, interval=1, tz=None)[source] -
Базовые классы:
matplotlib.dates.RRuleLocatorСоздаёт отметки на каждом часе.
Помечает каждый час в byhour; byhour может быть целым числом или последовательностью. По умолчанию отметки ставятся на каждый час:
byhour=range(24)interval — интервал между каждым итерационным значением. Например, если
interval=2, отмечает каждую вторую запись.
-
class matplotlib.dates.MinuteLocator(byminute=None, interval=1, tz=None)[source] -
Базовые классы:
matplotlib.dates.RRuleLocatorСоздаёт отметки на каждой минуте.
Помечает каждую минуту в byminute; byminute может быть целым числом или последовательностью. По умолчанию отметки ставятся на каждую минуту:
byminute=range(60)interval — интервал между каждым итерационным значением. Например, если
interval=2, отмечает каждую вторую запись.
-
class matplotlib.dates.SecondLocator(bysecond=None, interval=1, tz=None)[source] -
Базовые классы:
matplotlib.dates.RRuleLocatorСоздаёт отметки на каждой секунде.
Помечает каждую секунду в bysecond; bysecond может быть целым числом или последовательностью. По умолчанию отметки ставятся на каждую секунду:
bysecond = range(60)interval — интервал между каждым итерационным значением. Например, если
interval=2, отмечает каждую вторую запись.
-
class matplotlib.dates.MicrosecondLocator(interval=1, tz=None)[source] -
Базовые классы:
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.
Примечание
В соответствии с разделом 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)) ... [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 основан на спецификации отличной работы М.-А. Лемберга в его расширении 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/3.0.0/api/dates_api.html