日期和时间模块-fleming时区模块
介绍
This package contains Fleming, which contains a set of routines for doing datetime manipulation. Named after Sandford Fleming, the father of worldwide standard timezones, this package is meant to aid datetime manipulations with regards to timezones.
Fleming addresses some of the common difficulties with timezones and datetime objects, such as performing arithmetic and datetime truncation across a Daylight Savings Time border. It also provides utilities for generating date ranges and getting unix times with respect to timezones.
即:该软件包包含Fleming,其中包含一组用于执行日期时间操作的例程。 该软件包以全球标准时区之父桑福德·弗莱明(Sandford Fleming)的名字命名,旨在帮助对时区进行日期时间操纵。
弗莱明(Fleming)解决了时区和日期时间对象的一些常见困难,例如跨夏令时边界执行算术和日期时间截断。 它还提供了用于生成日期范围和获取相对于时区的Unix时间的实用程序。
Fleming接受pytz时区对象作为参数,并且假定用户对pytz有基本的了解。 如果你不了解pytz模块,可以参考模块-日期和时间模块之pytz时区模块了解有关pytz的更多信息。
安装
| |
查看fleming模块有哪些函数或方法:
| |
功能概述
下面是此软件包中每个功能的简要说明。 之后,将对功能进行更详细的说明和高级用法。 单击功能名称以转到其详细说明。
convert_to_tz:将日期时间对象转换为指定时区的时间对象。add_timedelta:将一个timedelta添加到datetime对象。floor:将日期时间对象向下舍入到上一个时间间隔。ceil:将日期时间对象四舍五入到下一个时间间隔。interval:以给定的时间间隔获取时间范围。unix_time:返回日期时间对象的unix时间戳。
convert_to_tz将日期时间对象转换指定时区的时间对象
fleming.convert_to_tz(dt, tz, return_naive=False) 将一个datetime对象转换成另一个时区的datetime对象。
参数说明:
dt,datetime对象,如果datetime对象没有时区设置,则默认以UTC作为其时区。tz,pytz模块的timezone对象,即需要转换到哪个时区去。return_naive=False是否转换成naive datetime object即是否转换成无时区的datetime对象,默认是不转换,即保留时区信息。
| |
我们再定义一个时区,将UTC标准时间对象转换成不带时区对象的datetime对象:
| |
这个时间,再不应该对转换后的时间再进行转换,转换过程中有可能得到的结果不是你想要的!
我们尝试再进一步转换:
| |
总结,无论什么时间,只要涉及到时间对象的转换,一定通过UTC标准时间进行计算!!对UTC标准时间进行时区转换再得到最好要的结果!
add_timedelta给datetime对象增加时间增量
fleming.add_timedelta(dt, td, within_tz=None)给datetime对象增加时间增量。
参数说明:
dt,datetime对象,如果datetime对象没有时区设置,则默认以UTC作为其时区。td,timedelta对象,需要添加的时间增量。within_tz,pytz模块的timezone对象,如果指定该参数,则dt将在日期时间算术之前转换为该时区,然后再转换回其原始时区。
| |
floor向下取最近的时间边界值
fleming.floor(dt, within_tz=None, year=None, month=None, week=None, day=None, hour=None, minute=None, second=None, microsecond=None, extra_td_if_floor=None)向下取最近的时间边界值。将日期时间四舍五入到最接近的时间间隔。 可用的时间间隔是年year,月month,周week,日day,小时hour,分钟minute,秒second和微秒microsecond。
参数中需要注意的是week参数,代码周,只能是1或默认的None,指定week时则year和month参数不生效。
| |
对无时区时间对象进行处理
对年和月间隔的处理:
| |
你发现的什么规律吗?当year值从1到49时,floor得到的值有什么规律?我完全没有发现,输出完成与预期不一样!:cry: 搞不懂!我猜后面的ceil方法也可能有类似的问题,我决定放弃这个模块的学习。Bye! 你如果想再深入的学习,可参考https://fleming.readthedocs.io/en/develop/index.html。
参考:
