datetime Arrow

Python时间和日期操作

Python中,对日期和时间的操作,主要使用这3个内置模块: datetime 、 time 和 calendar

导入需要的包

1
2
3
import arrow
import time, calendar
from datetime import datetime

获取当前时间

1
str(datetime.now())

获取两个代码位置在执行时的时间差

1
2
3
4
before = time.time()
func1()
after = time.time()
print(f’调用func1,花费时间{before-after}’)

格式化日期(指定输出的时间格式)

1
2
3
4
5
6
7
8
dayTime=('2018-01-14 12:00:00'
dayTime1= datetime.strptime(dayTime,'%Y-%m-%d %a %H:%M:%S').strftime("%w")
dayTime2= datetime.datetime(2018,1,14).strftime("%w")

# 格式化成2016-03-20 11:45:39形式
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 格式化成Sat Mar 28 22:24:24 2016形式
print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())

数字表示的时间转化为字符串表示

1
time.strftime('%Y%m%d %H:%M:%S',time.localtime(1434502529))

获得指定时间字符串对应星期几

1
2
3
thatDay = "2018-6-24"
week = datetime.strptime(thatDay,'%Y-%m-%d').strftime("%w")
# week= datetime.datetime(2018,6,24).strftime("%w")

Arrow 介绍

arrow是一个提供了更易懂和友好的方法来创建、操作、格式化和转化日期、时间和时间戳的python库。可以完全替代datetime,支持python2和3

基本使用

以当前时间获取arrow对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import arrow

>>> cur = arrow.now()
>>> cur
<Arrow [2017-02-04T13:47:58.114342+08:00]>

>>> cur.timestamp
>>> cur.year
>>> cur.month
>>> cur.day
>>> cur.hour
>>> cur.minute
>>> cur.second
>>> cur.week

以指定时间戳获取arrow对象

1
2
3
4
5
6
7
8
>>> arrow.get('1586782011')
<Arrow [2020-04-13T12:46:51+00:00]>
>>> arrow.get('2017-01-05')
<Arrow [2017-01-05T00:00:00+00:00]>
>>> arrow.get('2017.01.05')
<Arrow [2017-01-05T00:00:00+00:00]>
>>> arrow.get('2017/01/05')
<Arrow [2017-01-05T00:00:00+00:00]>

时间的计算和移动shift

1
2
3
4
5
6
7
>>> utc.replace(days=1)	# 设置日等于1号
>>> utc.replace(hours=2) # 设置hour等于2点,取值为0-23
>>> utc.replace(weeks=1) #

>>> utc.shift(days=+1) # 1天之后
>>> utc.shift(hours=-2) # 2小时之前
>>> cur.shift(years=1) # 明年

PS:注意hourhours的区别,前者是设置时间,后者是在原来时间的基础上加减

数据运算

Arrow对象可以通过简单的大于小于符合来判断时间先后,如:

1
2
3
4
5
6
7
8
9
10
11
>>> start = arrow.get('2017-02-03T15:47:58.114342+02:00')
>>> end = arrow.get('2017-02-02T07:17:41.756144+02:00')
>>> start
<Arrow [2017-02-03T15:47:58.114342+02:00]>
>>> end
<Arrow [2017-02-02T07:17:41.756144+02:00]>
>>> start > end
True
>>> start_to = start.to('+08:00')
>>> start == start_to
True

也可以通过’-‘运算符来获得时间的差值,如:

1
2
>>> start - end
datetime.timedelta(1, 30616, 358198)

转换为指定时间格式

1
arrow.now().format('YYYY-MM-DD HH:mm:ss ZZ')

附录: 时间格式说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
%a 星期几的简写 Weekday name, abbr.
%A 星期几的全称 Weekday name, full
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始

%b 月分的简写 Month name, abbr.
%B 月份的全称 Month name, full

%c 本地相应的日期表示和时间表示
%x 本地相应的日期表示 (e.g. 13/01/08)
%X 本地相应的时间表示 (e.g. 17:02:10)

%H 24小时制的小时 Hour (24-hour clock)
%M 十时制表示的分钟数 Minute number
%S 十进制的秒数 Second number

参考

Python 中的时间和日期操作

python 判断日期是星期几

Python 日期和时间

arrow时间库使用详解)


Python时间和日期操作
http://example.com/2019/12/18/2019-12-18-Python时间和日期操作/
作者
NSX
发布于
2019年12月18日
许可协议