目录
简介
Arrow 提供了一个友好而且非常易懂的方法,用于创建时间、计算时间、格式化时间,还可以对时间做转化、提取、兼容 python datetime 类型。
安装方法:
pip install arrow -U
导入方法:
import arrow

快速入门
以下是一些最常用的方法:
1 | import arrow |
看完你应该入门了。
时间的创建
arrow 创建时间,会生成一个 Arrow 对象
当前时间
以下创建一个当前时间:
1 | import arrow |
时间戳
根据整型或者浮点型时间戳创建时间:
1 | arrow.get(1599878923) |
字符串
支持ISO 8601规定的格式:
1 | # 带毫秒及时区,北京时间 |
按位传入时间值
1 | arrow.get(2020, 8, 1, 17) |
属性
Arrow 对象支持很多实用的属性:
1 | t = arrow.now() # 创建一个本地当前时间 |
格式化
格式化(Format)是指把时间转为人类易读的字符串形式。
1 | a = arrow.now() |
arrow 内置了一些格式:
1 | a.= arrow.utcnow() |
替换
可以对时间中的日期、小时等进行替换,以达到修改时间的目的,比如我们只要日期,可以将时分秒替换为 0。修改时区,也可以通过替换时间来实现。
1 | a = arrow.utcnow() |
需要注意的是,替换修改时间时,要保证最终的时间是一个合法的时间,如上例中的月份不能修改为 2 月。
移动
移动(Shift)是指可以将指定时间向前或者向后移动一定周期,如明天的此时,去年的今日。
1 | a.shift(weeks=+3) # 向未来三周 |
时区转换
除了上文 replace 方法转换外,还有专门的时区转换方法。以下从 utc 转到北京时间:
1 | utc = arrow.utcnow() |
时区的表示方法
公认的时区表达式:
- tzinfo 对象.
- str 时区描述符, similar to ‘US/Pacific’, or ‘Europe/Berlin’.
- str ISO 8601 风格, 如 ‘+07:00’.
- str, 特殊字符: ‘local’, ‘utc’, ‘UTC’.
人性化
人性化(Humanize)时间,是指将时间转化为人类易于主观识别的时间表达。以下是和当前时间对比:
1 | a = arrow.utcnow() |
也可以与另外一个指定的时间作对比:
1 | a.humanize(a.shift(days=1)) |
可以指定单位:
1 | # 单位为分钟 |
可以使用中文等其他语言:
1 | # 指定为中文 |
范围和跨度
可以定义一个时间区间:
1 | arrow.utcnow().span('hour') # 一个小时 |
Tokens
| Token | Output | |
|---|---|---|
| Year | YYYY | 2000, 2001, 2002 … 2012, 2013 |
| YY | 00, 01, 02 … 12, 13 | |
| Month | MMMM | January, February, March … |
| MMM | Jan, Feb, Mar … | |
| MM | 01, 02, 03 … 11, 12 | |
| M | 1, 2, 3 … 11, 12 | |
| Day of Year | DDDD | 001, 002, 003 … 364, 365 |
| DDD | 1, 2, 3 … 4, 5 | |
| Day of Month | DD | 01, 02, 03 … 30, 31 |
| D | 1, 2, 3 … 30, 31 | |
| Day of Week | dddd | Monday, Tuesday, Wednesday … |
| ddd | Mon, Tue, Wed … | |
| d | 1, 2, 3 … 6, 7 | |
| Hour | HH | 00, 01, 02 … 23, 24 |
| H | 0, 1, 2 … 23, 24 | |
| hh | 01, 02, 03 … 11, 12 | |
| h | 1, 2, 3 … 11, 12 | |
| AM / PM | A | AM, PM |
| a | am, pm | |
| Minute | mm | 00, 01, 02 … 58, 59 |
| m | 0, 1, 2 … 58, 59 | |
| Second | ss | 00, 01, 02 … 58, 59 |
| s | 0, 1, 2 … 58, 59 | |
| Sub-second | SSS | 000, 001, 002 … 998, 999 |
| SS | 00, 01, 02 … 98, 99 | |
| S | 0, 1, 2 … 8, 9 | |
| Timezone | ZZ | -07:00, -06:00 … +06:00, +07:00 |
| Z | -0700, -0600 … +0600, +0700 | |
| Timestamp | X | 1381685817 |
参考
- https://arrow.readthedocs.io/en/stable/
- https://pypi.org/project/arrow/
- https://github.com/arrow\-py/arrow