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'sdateutil.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)[source] -
Преобразование строки даты в datenum с использованием
dateutil.parser.parse().Параметры: -
d : string or sequence of strings -
Даты для преобразования.
-
default : datetime instance, optional -
По умолчанию дата для использования, когда поля отсутствуют в d.
-
-
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 or sequence ofdatetime -
Даты возвращаются во временной зоне tz.
Если x является последовательностью, будет возвращена последовательность объектов
datetime.
Примечания
Добавление единицы здесь является историческим артефактом. Также обратите внимание, что используется григорианский календарь; это не универсальная практика. Подробности см. в строке документации модуля.
-
-
matplotlib.dates.num2timedelta(x)[source] -
Преобразование числа дней в объект
timedelta.Если x является последовательностью, будет возвращена последовательность объектов
timedelta.Параметры: -
x : float, sequence of floats -
Количество дней. Дробная часть представляет часы, минуты, секунды.
Возвращает: -
datetime.timedelta or list[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] -
Bases:
matplotlib.ticker.FormatterФорматирование отметки (в секундах с начала эпохи) с помощью строки формата
strftime.Параметры: -
fmt : str -
Строка формата
strftime -
tz : tzinfo
-
illegal_s = re.compile('((^|[^%])(%%)*%s)')
-
set_tzinfo(self, tz)[source]
-
strftime(self, dt, fmt=None)[source] -
[Устаревшее] См. документацию по
datetime.datetime.strftime()fmt — это строка формата
datetime.datetime.strftime().Предупреждение: Для лет до 1900 года, в зависимости от текущего языка, возможно, что год, отображаемый с помощью %x, будет неверным. Для лет до 100 %y и %Y будут давать заполненные нулями строки.
Примечания
Устарело начиная с версии 3.0.
-
strftime_pre_1900(self, dt, fmt=None)[source] -
[Устаревшее] Вызов 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)[source] -
Базы:
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)
Автоматическое форматирование меток даты. Значение по умолчанию используется для формирования начальной строки, а затем удаляются избыточные элементы.
-
format_data_short(self, value)[source] -
Возвращает короткую строковую версию значения деления.
По умолчанию используется длинное значение, независимое от позиции.
-
format_ticks(self, values)[source] -
Возвращает метки делений для всех делений сразу.
-
get_offset(self)[source]
-
-
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(self)[source] -
Преобразование интервала данных оси в объекты datetime.
-
hms0d = {'byhour': 0, 'byminute': 0, 'bysecond': 0}
-
nonsingular(self, vmin, vmax)[source] -
При заданных предложенных верхних и нижних пределах, корректирует диапазон, если он слишком близок к сингулярному (т. е. диапазон ~0).
-
set_tzinfo(self, tz)[source] -
Устанавливает информацию о часовом поясе.
-
viewlim_to_dt(self)[source] -
Преобразует интервал просмотра в объекты datetime.
-
-
class matplotlib.dates.RRuleLocator(o, tz=None)[source] -
Базы:
matplotlib.dates.DateLocator-
autoscale(self)[source] -
Устанавливает пределы просмотра, включая диапазон данных.
-
static get_unit_generic(freq)[source]
-
tick_values(self, 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 — логическое значение, указывающее, должны ли деления выбираться кратными интервала. Это закрепит деления на «более приятных» позициях. Например, это принудит деления к часам 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(self)[source] -
Попытаться выбрать пределы отображения разумным способом.
-
get_locator(self, dmin, dmax)[source] -
Выбрать лучший локейтор на основе расстояния.
-
nonsingular(self, vmin, vmax)[source] -
Учитывая предлагаемые верхний и нижний пределы, скорректировать диапазон, если он слишком близок к сингулярному (то есть, диапазон ~0).
-
refresh(self)[source] -
Обновить внутреннюю информацию на основе текущих пределов.
-
set_axis(self, axis)[source]
-
tick_values(self, vmin, vmax)[source] -
Возвращает значения расположенных делений, учитывая vmin и vmax.
Примечание
Чтобы получить расположения делений с автоматически заданными значениями vmin и vmax для соответствующего
axisпросто вызовите экземпляр Locator:>>> 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(self)[source] -
Устанавливает пределы отображения, чтобы включить диапазон данных.
-
tick_values(self, vmin, vmax)[source] -
Возвращает значения расположенных делений, учитывая vmin и vmax.
Примечание
Чтобы получить расположения делений с автоматически заданными значениями vmin и vmax для соответствующего
axisпросто вызовите экземпляр Locator:>>> 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(self, axis)[source]
-
set_data_interval(self, vmin, vmax)[source]
-
set_view_interval(self, vmin, vmax)[source]
-
tick_values(self, vmin, vmax)[source] -
Возвращает значения размеченных делений, заданных 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)[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)) ... # 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, интервал 2 означает раз в два года, но с HOURLY — раз в два часа. Значение по умолчанию — 1.
- wkst — День начала недели. Должен быть одним из констант MO, TU, WE или целым числом, указывающим на первый день недели. Это повлияет на повторения, основанные на еженедельных периодах. По умолчанию день начала недели берётся из calendar.firstweekday() и может быть изменён с помощью calendar.setfirstweekday().
-
count —
Если указано, это определяет количество сгенерированных случаев.
Примечание
С версии 2.5.0 использование ключевого слова
untilв сочетании сcountустарело, чтобы обеспечить полное соответствиеdateutilспецификации RFC-5545 Sec. 3.3.10. Поэтому,untilиcountне должны встречаться в одном вызовеrrule. -
until —
Если указано, это должен быть экземпляр datetime, определяющий верхнюю границу повторения. Последнее повторение в правиле — самая большая дата, которая меньше или равна значению, указанному в параметре
until.Примечание
С версии 2.5.0 использование ключевого слова
untilв сочетании сcountустарело, чтобы обеспечить полное соответствиеdateutilспецификации RFC-5545 Sec. 3.3.10. Поэтому,untilиcountне должны встречаться в одном вызовеrrule. - и т.д.
-
replace(self, **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) 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 к дате/времени:
- Год
- Месяц
- День
- Часы
- Минуты
- Секунды
- Микросекунды
Наконец, применяется день недели, используя правило, описанное выше.
Например
>>> 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)[source] -
Возвращает версию этого объекта, представленного исключительно с помощью целочисленных значений для относительных атрибутов.
>>> relativedelta(days=1.5, hours=2).normalized() relativedelta(days=+1, hours=+14)
Возвращает: Возвращает объект dateutil.relativedelta.relativedelta.
-
weeks
-
matplotlib.dates.seconds(s)[source] -
[Устаревшее] Возвращает секунды как дни.
Примечания
Устаревшее начиная с версии 3.1.
-
matplotlib.dates.minutes(m)[source] -
[Устаревшее] Возвращает минуты как дни.
Примечания
Устаревшее начиная с версии 3.1.
-
matplotlib.dates.hours(h)[source] -
[Устаревшее] Возвращает часы как дни.
Примечания
Устаревшее начиная с версии 3.1.
-
matplotlib.dates.weeks(w)[source] -
[Устаревшее] Возвращает недели как дни.
Примечания
Устаревшее начиная с версии 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