matplotlib.dates
#
Matplotlib 提供了复杂的日期绘图功能,站在 pythondatetime
和附加模块dateutil的肩膀上。
默认情况下,Matplotlib 在
x 轴或 y 轴上绘制时使用中描述的单位机制units
来转换datetime.datetime
和对象。numpy.datetime64
用户不需要做任何事情来格式化日期,但是日期通常有严格的格式化需求,所以这个模块提供了很多轴定位器和格式化器。使用的基本示例numpy.datetime64
是:
import numpy as np
times = np.arange(np.datetime64('2001-01-02'),
np.datetime64('2002-02-03'), np.timedelta64(75, 'm'))
y = np.random.randn(len(times))
fig, ax = plt.subplots()
ax.plot(times, y)
Matplotlib 日期格式#
Matplotlib 使用浮点数表示日期,指定自默认纪元 1970-01-01 UTC 以来的天数;例如,1970-01-01, 06:00 是浮点数 0.25。格式化程序和定位器需要使用datetime.datetime
对象,因此只能表示 0001 年到 9999 年之间的日期。在纪元两侧(大约)70 年可以实现微秒精度,在允许的日期范围(0001 年到 9999 年)的其余部分可以达到 20 微秒。如有必要,可以在导入时通过dates.set_epoch
或
其他日期更改纪元;rcParams["dates.epoch"]
有关讨论,请参阅
日期精度和时期。
笔记
在 Matplotlib 3.3 之前,纪元是 0000-12-31,它失去了现代微秒精度,并且还使默认轴限制 0 成为无效的日期时间。在 3.3 中,时代已如上更改。要将旧的序数浮点数转换为新的纪元,用户可以执行以下操作:
new_ordinal = old_ordinal + mdates.date2num(np.datetime64('0000-12-31'))
有许多辅助函数可以在datetime
对象和 Matplotlib 日期之间进行转换:
使用 .将日期字符串转换为 datenum |
|
将 datetime 对象转换为 Matplotlib 日期。 |
|
将 Matplotlib 日期转换为 |
|
将天数转换为 |
|
返回一系列等间距的 Matplotlib 日期。 |
|
设置日期时间计算的纪元(日期的原点)。 |
|
获取 |
笔记
与 Python 一样datetime.datetime
,Matplotlib 使用公历进行日期和浮点数之间的所有转换。这种做法并不普遍,日历差异可能会导致 Python 和 Matplotlib 给出的自 0001-01-01 以来的天数与其他软件和数据库产生的天数之间的混淆差异。例如,美国海军天文台使用的日历在 1582 年 10 月从儒略历转换为公历。因此,使用他们的计算器,0001-01-01 和 2006-04-01 之间的天数是 732403,而使用公历通过 datetime 模块的日历我们发现:
In [1]: date(2006, 4, 1).toordinal() - date(1, 1, 1).toordinal()
Out[1]: 732401
所有的 Matplotlib 日期转换器、代码和格式化程序都是时区感知的。如果未提供明确的时区,则假定为rcParams["timezone"]
(默认值:),以字符串形式提供。'UTC'
如果您想使用不同的时区,请将tz关键字参数传递num2date
给您创建的任何日期代码或定位器。这可以是一个datetime.tzinfo
实例,也可以是一个带有时区名称的字符串,可以由gettz
.
此模块中提供了广泛的特定和通用日期刻度定位器和格式化程序。有关刻度定位器和格式化程序的一般信息,请参阅
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
: 定位星期几,例如,MO、TU。MonthLocator
: 定位月份,例如,7 代表 7 月。YearLocator
: 找出基数倍数的年份。RRuleLocator
: 使用rrulewrapper
. 是dateutil的rrulewrapper
简单包装器, 它允许几乎任意的日期刻度规范。请参阅规则示例。dateutil.rrule
AutoDateLocator
:在自动缩放上,此类选择最佳DateLocator
(例如,RRuleLocator
)来设置视图限制和刻度位置。如果用它调用,interval_multiples=True
将使刻度与刻度间隔的合理倍数对齐。例如,如果间隔是 4 小时,它将选择小时 0、4、8 等作为刻度。默认情况下不保证此行为。
日期格式化程序#
可用的日期格式化程序是:
AutoDateFormatter
: 试图找出使用的最佳格式。这在与AutoDateLocator
.ConciseDateFormatter
: 还试图找出使用的最佳格式,并使格式尽可能紧凑,同时仍具有完整的日期信息。这在与AutoDateLocator
.DateFormatter
: 使用strftime
格式字符串。
- 类 matplotlib.dates。AutoDateFormatter ( locator , tz = None , defaultfmt = '%Y-%m-%d' , * , usetex = None ) [source] #
基地:
Formatter
A
Formatter
试图找出要使用的最佳格式。这在与AutoDateLocator
.AutoDateFormatter
有一个.scale
字典,将刻度刻度(一个主要刻度之间的天数间隔)映射到格式化字符串;这本词典默认为self.scaled = { DAYS_PER_YEAR: rcParams['date.autoformatter.year'], DAYS_PER_MONTH: rcParams['date.autoformatter.month'], 1: rcParams['date.autoformatter.day'], 1 / HOURS_PER_DAY: rcParams['date.autoformatter.hour'], 1 / MINUTES_PER_DAY: rcParams['date.autoformatter.minute'], 1 / SEC_PER_DAY: rcParams['date.autoformatter.second'], 1 / MUSECONDS_PER_DAY: rcParams['date.autoformatter.microsecond'], }
格式化程序使用与字典中大于或等于当前比例的最低键对应的格式字符串。字典条目可以自定义:
locator = AutoDateLocator() formatter = AutoDateFormatter(locator) formatter.scaled[1/(24*60)] = '%M:%S' # only show min and sec
也可以使用自定义可调用对象来代替格式字符串。以下示例显示如何使用自定义格式函数从小数秒中去除尾随零并将日期添加到第一个刻度标签:
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 formatter.scaled[1/(24*60)] = my_format_function
自动格式化日期标签。
- 参数:
- 定位器
ticker.Locator
该轴正在使用的定位器。
- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.- 默认fmt str
如果 中的任何值
self.scaled
都不大于 . 返回的单位,则使用的默认格式locator._get_unit()
。- usetex布尔值,默认值:(
rcParams["text.usetex"]
默认值False
:) 启用/禁用使用 TeX 的数学模式来呈现格式化程序的结果。如果其中的任何条目
self.scaled
设置为函数,则由自定义函数来启用或禁用 TeX 的数学模式本身。
- 定位器
- 类 matplotlib.dates。AutoDateLocator ( tz = None , minticks = 5 , maxticks = None , interval_multiples = True ) [来源] #
基地:
DateLocator
在自动缩放上,此类选择最佳
DateLocator
设置视图限制和刻度位置。- 属性:
- 间隔字典
将刻度频率映射到允许该刻度的倍数。默认是
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, 21], 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], }
其中键定义在
dateutil.rrule
.间隔用于指定适合滴答频率的倍数。例如,对于每日刻度,每 7 天是合理的,但对于分钟/秒,15 或 30 是有意义的。
自定义时,您应该只修改现有键的值。您不应添加或删除条目。
强制每 3 小时计时一次的示例:
locator = AutoDateLocator() locator.intervald[HOURLY] = [3] # only show every 3 hours
- 参数:
- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.- 薄荷糖int
所需的最小刻度数;控制刻度是否每年、每月等发生。
- maxticks int
所需的最大刻度数;控制滴答之间的间隔(每隔一个、每 3 个等)。对于细粒度控制,这可以是一个字典,将单个规则频率常数(每年、每月等)映射到它们自己的最大刻度数。这可用于保持刻度数适合于在 中选择的格式
AutoDateFormatter
。此字典中未指定的任何频率都被赋予默认值。- interval_multiples布尔值,默认值:True
刻度是否应该选择为间隔的倍数,将它们锁定到“更好”的位置。例如,当每小时滴答以 6 小时为间隔进行时,这将强制滴答位于 0、6、12、18 小时。
- tz str 或
- 类 matplotlib.dates。ConciseDateConverter (格式= None , zero_formats = None , offset_formats = None , show_offset = True , * , interval_multiples = True ) [来源] #
- 类 matplotlib.dates。ConciseDateFormatter ( locator , tz = None , formats = None , offset_formats = None , zero_formats = None , show_offset = True , * , usetex = None ) [来源] #
基地:
Formatter
A
Formatter
试图找出用于日期的最佳格式,并使其尽可能紧凑,但仍然是完整的。这在与 : 一起使用时最有用AutoDateLocator
:>>> locator = AutoDateLocator() >>> formatter = ConciseDateFormatter(locator)
- 参数:
- 定位器
ticker.Locator
该轴正在使用的定位器。
- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区,传递给
dates.num2date
.- 格式列表 6 个字符串,可选
6 级刻度标记的格式字符串:主要是年、月、日、小时、分钟和秒。字符串使用与
strftime
. 默认为['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f']
- zero_formats 6 个字符串的列表,可选
对于给定刻度级别,刻度标签的格式字符串为“零”。例如,如果大多数刻度是月份,则 2005 年 1 月 1 日左右的刻度将被标记为“Dec”、“2005”、“Feb”。默认是
['', '%Y', '%b', '%b-%d', '%H:%M', '%H:%M']
- offset_formats 6 个字符串的列表,可选
应用于 x 轴右侧或 y 轴顶部的“偏移”字符串的 6 个级别的格式字符串。结合刻度标签,这应该完全指定日期。默认值为:
['', '%Y', '%Y-%b', '%Y-%b-%d', '%Y-%b-%d', '%Y-%b-%d %H:%M']
- show_offset布尔值,默认值:True
是否显示偏移量。
- usetex布尔值,默认值:(
rcParams["text.usetex"]
默认值False
:) 启用/禁用使用 TeX 的数学模式来呈现格式化程序的结果。
- 定位器
例子
请参阅使用 ConciseDateFormatter 格式化日期刻度
自动格式化日期标签。默认格式用于形成一个初始字符串,然后删除多余的元素。
- 类 matplotlib.dates。DateConverter ( * , interval_multiples = True ) [来源] #
-
datetime.date
和数据的转换器datetime.datetime
,或用于表示将由 转换的日期/时间数据的转换器date2num
。此类数据的“单位”标签是 None 或 tzinfo 实例。
- 类 matplotlib.dates。DateFormatter ( fmt , tz = None , * , usetex = None ) [来源] #
基地:
Formatter
strftime
使用格式字符串格式化刻度(以纪元以来的天数为单位) 。- 参数:
- fmt字符串
strftime
格式化字符串- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.- usetex布尔值,默认值:(
rcParams["text.usetex"]
默认值False
:) 启用/禁用使用 TeX 的数学模式来呈现格式化程序的结果。
- 类 matplotlib.dates。DateLocator ( tz = None ) [来源] #
基地:
Locator
在绘制日期时确定刻度位置。
此类是其他定位器的子类,并不打算单独使用。
- 参数:
- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.
- tz str 或
- hms0d = {'byhour': 0, 'byminute': 0, 'bysecond': 0} #
- set_tzinfo ( tz ) [来源] #
设置时区信息。
- 参数:
- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.
- tz str 或
- 类 matplotlib.dates。DayLocator ( bymonthday = None , interval = 1 , tz = None ) [来源] #
基地:
RRuleLocator
对每月每一天的事件进行标记。例如,1、15、30。
- 参数:
- bymonthday int 或 int 列表,默认:所有天
刻度线将在bymonthday的每一天放置。默认值为 ,即每月的每一天。
bymonthday=range(1, 32)
- 间隔整数,默认值:1
每次迭代之间的间隔。例如,如果
interval=2
,则标记每第二次出现。- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.
- 类 matplotlib.dates。HourLocator ( byhour = None , interval = 1 , tz = None ) [来源] #
基地:
RRuleLocator
对每小时发生的事件打勾。
- 参数:
- byhour int 或 int 列表,默认值:所有小时
刻度将在byhour中每小时放置一次。默认值为
byhour=range(24)
,即每小时。- 间隔整数,默认值:1
每次迭代之间的间隔。例如,如果
interval=2
,则标记每第二次出现。- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.
- 类 matplotlib.dates。MicrosecondLocator ( interval = 1 , tz = None ) [source] #
基地:
DateLocator
每隔一微秒或多微秒定期进行滴答声。
笔记
默认情况下,Matplotlib 使用自纪元以来的天数表示时间的浮点表示,因此以微秒时间分辨率绘制数据对于远离纪元(约 70 年)的日期来说效果不佳(检查
get_epoch
)。如果您想要亚微秒分辨率的时间图,强烈建议使用浮点秒,而不是类似日期时间的时间表示。
如果您确实必须使用 datetime.datetime() 或类似的方法并且仍然需要微秒精度,请将时间原点更改为
dates.set_epoch
更接近所绘制日期的值。请参阅日期精度和历元。- 参数:
- 间隔整数,默认值:1
每次迭代之间的间隔。例如,如果
interval=2
,则标记每第二次出现。- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.
- set_data_interval ( vmin , vmax ) [来源] #
[已弃用]
笔记
3.5 版后已弃用:改为使用
Axis.set_data_interval
。
- set_view_interval ( vmin , vmax ) [来源] #
[已弃用]
笔记
3.5 版后已弃用:改为使用
Axis.set_view_interval
。
- 类 matplotlib.dates。MinuteLocator ( byminute = None , interval = 1 , tz = None ) [来源] #
基地:
RRuleLocator
在每分钟的出现上打勾。
- 参数:
- byminute int 或 int 列表,默认:所有分钟
刻度将被放置在每分钟byminutes上。默认值为
byminute=range(60)
,即每分钟。- 间隔整数,默认值:1
每次迭代之间的间隔。例如,如果
interval=2
,则标记每第二次出现。- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.
- 类 matplotlib.dates。MonthLocator ( bymonth = None , bymonthday = 1 , interval = 1 , tz = None ) [来源] #
基地:
RRuleLocator
在每个月的出现上打勾,例如 1、3、12。
- 参数:
- bymonth int 或 int 列表,默认:所有月份
在bymonth的每个月都会放置刻度线。默认为 ,即每月。
range(1, 13)
- bymonthday int,默认值:1
放置刻度的日期。
- 间隔整数,默认值:1
每次迭代之间的间隔。例如,如果
interval=2
,则标记每第二次出现。- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.
- 类 matplotlib.dates。RRuleLocator ( o , tz = None ) [来源] #
基地:
DateLocator
- 参数:
- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.
- tz str 或
- 类 matplotlib.dates。SecondLocator ( bysecond = None , interval = 1 , tz = None ) [source] #
基地:
RRuleLocator
对每一秒的出现进行标记。
- 参数:
- bysecond int 或 int 列表,默认:所有秒
刻度将在bysecond的每一秒上放置。默认值为 ,即每秒。
bysecond = range(60)
- 间隔整数,默认值:1
每次迭代之间的间隔。例如,如果
interval=2
,则标记每第二次出现。- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.
- 类 matplotlib.dates。WeekdayLocator ( byweekday = 1 , interval = 1 , tz = None ) [来源] #
基地:
RRuleLocator
在每个工作日的事件上打勾。
- 参数:
- byweekday int 或 int 列表,默认:所有天
刻度线将在byweekday的每个工作日放置。默认是每天。
byweekday的元素必须是 MO, TU, WE, TH, FR, SA, SU, from 的常量之一
dateutil.rrule
,它们已被导入matplotlib.dates
命名空间。- 间隔整数,默认值:1
每次迭代之间的间隔。例如,如果
interval=2
,则标记每第二次出现。- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.
- 类 matplotlib.dates。YearLocator ( base = 1 , month = 1 , day = 1 , tz = None ) [source] #
基地:
RRuleLocator
在每年的给定日期打勾,这是基数的倍数。
例子:
# Tick every year on Jan 1st locator = YearLocator() # Tick every 5 years on July 4th locator = YearLocator(5, month=7, day=4)
- 参数:
- 基本整数,默认值:1
标记每个基准年。
- 月份int,默认值:1
放置刻度的月份,从 1 开始。默认为一月。
- 天整数,默认值:1
放置刻度的日期。
- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) 刻度时区。如果是字符串,则将tz传递给
dateutil.tz
.
- matplotlib.dates。date2num ( d ) [来源] #
将 datetime 对象转换为 Matplotlib 日期。
- 参数:
- 返回:
- 浮点数或浮点数序列
自纪元以来的天数。查看
get_epoch
epoch,可以通过rcParams["date.epoch"]
(默认值:)'1970-01-01T00:00:00'
或set_epoch
. 如果纪元是“1970-01-01T00:00:00”(默认),则 1970 年 1 月 1 日中午(“1970-01-01T12:00:00”)返回 0.5。
笔记
假定为公历;这不是普遍做法。有关详细信息,请参阅模块文档字符串。
- matplotlib.dates。datestr2num ( d , default = None ) [来源] #
使用 .将日期字符串转换为 datenum
dateutil.parser.parse
。- 参数:
- d str 或 str 序列
要转换的日期。
- 默认datetime.datetime,可选
d中缺少字段时使用的默认日期。
- matplotlib.dates。drange ( dstart , dend , delta ) [来源] #
返回一系列等间距的 Matplotlib 日期。
日期从dstart开始,一直到但不包括dend。它们由delta隔开。
- 参数:
- 开始,结束
datetime
日期限制。
- 三角洲
datetime.timedelta
日期的间距。
- 开始,结束
- 返回:
numpy.array
代表 Matplotlib 日期的列表浮动。
- matplotlib.dates。epoch2num ( e ) [来源] #
[已弃用] 将 UNIX 时间转换为自 Matplotlib 纪元以来的天数。
- 参数:
- 浮动列表
自 1970-01-01 以来的时间(以秒为单位)。
- 返回:
numpy.array
自 Matplotlib 纪元以来的天数(参见 参考资料
get_epoch()
)。
笔记
3.5 版后已弃用:改用numpy.datetime64 类型。
[date2num(datetime.utcfromtimestamp(t)) for t in e]
- matplotlib.dates。get_epoch ( ) [来源] #
获取
dates
.- 返回:
- 纪元_
纪元的字符串(可通过 解析
numpy.datetime64
)。
- matplotlib.dates。num2date ( x , tz = None ) [来源] #
将 Matplotlib 日期转换为
datetime
对象。- 参数:
- x浮点数或浮点数序列
自纪元以来的天数(分数部分表示小时、分钟、秒)。查看
get_epoch
epoch,可以通过rcParams["date.epoch"]
(默认值:)'1970-01-01T00:00:00'
或set_epoch
.- tz str 或
tzinfo
, 默认值:rcParams["timezone"]
(默认值:'UTC'
) x的时区。如果是字符串,则将tz传递给
dateutil.tz
.
- 返回:
笔记
假定为公历;这不是普遍做法。有关详细信息,请参阅模块文档字符串。
- matplotlib.dates。num2epoch ( d ) [来源] #
[已弃用] 将自 Matplotlib 纪元以来的天数转换为 UNIX 时间。
- 参数:
- d浮点数列表
自 Matplotlib 纪元以来的天数(参见 参考资料
get_epoch()
)。
- 返回:
numpy.array
自 1970-01-01 以来的时间(以秒为单位)。
笔记
3.5 版后已弃用:改为使用
num2date(e).timestamp()
。
- matplotlib.dates。num2timedelta ( x ) [来源] #
将天数转换为
timedelta
对象。如果x是一个序列,
timedelta
则将返回一个对象序列。- 参数:
- x浮点数,浮点数序列
天数。小数部分代表小时、分钟、秒。
- 返回:
- 类 matplotlib.dates。relativedelta ( dt1 =无, dt2 =无,年= 0 ,月= 0 ,天= 0 ,闰日= 0 ,周= 0 ,小时= 0 ,分钟= 0 ,秒= 0 ,微秒= 0 ,年=无,月= None , day = None , weekday = None , yearday = None , nlyearday = None , hour = None , minute = None , second = None , microsecond = None )#
基地:
object
relativedelta 类型旨在应用于现有日期时间,并且可以替换该日期时间的特定组件,或表示时间间隔。
它基于 M.-A 所做的出色工作的规范。Lemburg 在他的 mx.DateTime扩展中。但是,请注意,这种类型没有实现与他的工作相同的算法。不要期望它表现得像 mx.DateTime 的对应物。
有两种不同的方式来构建 relativedelta 实例。第一个是传递两个日期/日期时间类:
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 arithmetic 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 天已经是星期一,因此没有效果.
- 归一化( ) #
返回此对象的一个版本,该版本完全使用相对属性的整数值表示。
>>> relativedelta(days=1.5, hours=2).normalized() relativedelta(days=+1, hours=+14)
- 返回:
- 房地产 周#
- 类 matplotlib.dates。rrulewrapper ( freq , tzinfo = None , ** kwargs ) [source] #
基地:
object
一个
dateutil.rrule
允许灵活日期刻度规范的简单包装器。- 参数:
- 频率{每年、每月、每周、每天、每小时、每分钟、第二次}
滴答频率。这些常量在 中定义
dateutil.rrule
,但也可以从中访问matplotlib.dates
。- tzinfo
datetime.tzinfo
, 可选 时区信息。默认值为无。
- **kwargs
额外的关键字参数被传递给
dateutil.rrule
.
- matplotlib.dates。set_epoch (纪元) [来源] #
设置日期时间计算的纪元(日期的原点)。
默认纪元是
rcParams["dates.epoch"]
(默认为 1970-01-01T00:00)。如果需要微秒精度,则绘制的日期需要在纪元的大约 70 年内。Matplotlib 在内部将日期表示为自纪元以来的天数,因此浮点动态范围需要在 2^52 的因子内。
set_epoch
必须在转换任何日期之前调用(即在导入部分附近),否则将引发 RuntimeError。另请参阅日期精度和历元。
- 参数:
- 纪元_
可解析的有效 UTC 日期
numpy.datetime64
(不包括时区)。