python 时间模块 arrow 常用配置

我个人在python中经常使用arrow模块替代datetime模块,个人认为非常好用,

文章目录

安装

pip install arrow

应用样例:

In [1]: import arrow
# 基准的时区,第一种写法
In [2]: now = arrow.now('local')

In [3]: now
Out[3]: <Arrow [2018-11-06T12:23:53.594706+08:00]>
# 切换时区的写法
In [4]: now2 = arrow.now().to('local')

In [5]: now2
Out[5]: <Arrow [2018-11-06T12:24:18.191082+08:00]>
# 格式化输出日期
In [6]: now.format('YYYY-MM-DD')
Out[6]: '2018-11-06'
# 格式化输出日期及时分秒
In [7]: now.format('YYYY-MM-DD HH:mm:ss')
Out[7]: '2018-11-06 12:23:53'
# 按天偏移(-1为昨天, 0为当天, 1为明天,以此类推)
In [8]: now.shift(days=-1).format('YYYY-MM-DD')
Out[8]: '2018-11-05'
# 按月偏移(-1为上个月,0为本月, 1为下个月,以此类推)
In [9]: now.shift(months=-1).format("YYYYMMDD")
Out[9]: '20181006'
# 返回当天是本周中的哪一天(下面2的意思即为周二)
In [10]: now.format('d')
Out[10]: '2'
# 返回当天是本月中的哪一天
In [11]: now.format('D')
Out[11]: '6'
# 获取当前时间戳
In [12]: now.timestamp
Out[12]: 1541478233
# 将时间戳转为可读性的时间
In [13]: stamp = 1533890211

In [14]: arrow.get(stamp)
Out[14]: <Arrow [2018-08-10T08:36:51+00:00]>
# 将时间转为人性化的,比如:'an hour ago'
In [15]: now.humanize()
Out[15]: '16 minutes ago'
 # 当天的开始时间, 即:当日00:00:00
In [16]: now.floor('day')
Out[16]: <Arrow [2018-11-06T00:00:00+08:00]>
 # 获取当月最初的时间,即:当月1日00:00:00
In [17]: now.floor('month')
Out[17]: <Arrow [2018-11-01T00:00:00+08:00]>
 # 当天的结束时间, 即:当日23:59:59
In [18]: now.ceil('day')
Out[18]: <Arrow [2018-11-06T23:59:59.999999+08:00]>
# 获取当月最后的时间,即:当月最后1日23:59:59
In [19]: now.ceil('month')
Out[19]: <Arrow [2018-11-30T23:59:59.999999+08:00]>
# 从类似日期的字符串转为日期格式的数据
In [20]: arrow.get('20181010', 'YYYYMMDD').format("YYYY-MM-DD")
Out[20]: '2018-10-10'
# 生成日期连续的日期区间
In [21]: start = arrow.get('2018-09-01','YYYY-MM-DD')

In [22]: end = arrow.get('2018-09-10','YYYY-MM-DD')

In [23]: [dt for dt in arrow.Arrow.range('day',start,end)]
Out[23]:
[<Arrow [2018-09-01T00:00:00+00:00]>,
 <Arrow [2018-09-02T00:00:00+00:00]>,
 <Arrow [2018-09-03T00:00:00+00:00]>,
 <Arrow [2018-09-04T00:00:00+00:00]>,
 <Arrow [2018-09-05T00:00:00+00:00]>,
 <Arrow [2018-09-06T00:00:00+00:00]>,
 <Arrow [2018-09-07T00:00:00+00:00]>,
 <Arrow [2018-09-08T00:00:00+00:00]>,
 <Arrow [2018-09-09T00:00:00+00:00]>,
 <Arrow [2018-09-10T00:00:00+00:00]>]
# 单位时间跨度的起止时间
In [25]: now.span('hour')
Out[25]:
(<Arrow [2018-11-06T12:00:00+08:00]>,
 <Arrow [2018-11-06T12:59:59.999999+08:00]>)

In [26]: now.span('month')
Out[26]:
(<Arrow [2018-11-01T00:00:00+08:00]>,
 <Arrow [2018-11-30T23:59:59.999999+08:00]>)

In [27]: now.span('week')
Out[27]:
(<Arrow [2018-11-05T00:00:00+08:00]>,
 <Arrow [2018-11-11T23:59:59.999999+08:00]>)

In [28]: now.span('day')
Out[28]:
(<Arrow [2018-11-06T00:00:00+08:00]>,
 <Arrow [2018-11-06T23:59:59.999999+08:00]>)
# replace的使用方法, 结果前后对比
In [29]: now.format('YYYYMMDD HH:mm:ss')
Out[29]: '20181106 12:23:53'

In [30]: now.replace(hour=0, minute=30,second=0).format('YYYYMMDD HH:mm:ss')
Out[30]: '20181106 00:30:00'
In [31]: a = '2018-01-02'

In [32]: b = arrow.get(a)

In [33]: b
Out[33]: <Arrow [2018-01-02T00:00:00+00:00]>

# day of year
In [34]: b.format("DDD")
Out[34]: '2'


就不举一反三哈,如果有新的用法, 我将不定时更新.
如果觉得以上都不能解决你的问题,那么可以查看Arrow的官方文档
end

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值