【笔记】Python3的日期和时间

前言

Python3的日期和时间学习笔记

引入依赖

1
import datetime

创建对象

当前日期和时间

无时区

1
dt = datetime.datetime.today()
1
dt = datetime.datetime.now()

有时区

1
dt = datetime.datetime.now([<timezone>])
UTC
1
dt = datetime.datetime.utcnow()

任意时间和日期

1
dt = datetime.datetime(2006, 1, 2)
1
dt = datetime.datetime(2006, 1, 2, 15)
1
dt = datetime.datetime(2006, 1, 2, 15, 4)
1
dt = datetime.datetime(2006, 1, 2, 15, 4, 5)
1
dt = datetime.datetime(2006, 1, 2, 15, 4, 5, 700)
1
2
3
4
data = datetime.date(2006, 1, 2)
time = datetime.time(15, 4, 5, 700)

dt = datetime.datetime.combine(data, time)

仅日期

1
data = datetime.date(2006, 1, 2)

仅时间

1
time = datetime.time(15, 4, 5, 0)

当前时间戳

1
ts = datetime.datetime.now().timestamp()

获取年月日时分秒微秒时区

1
2
3
4
5
6
7
8
dt.year
dt.month
dt.day
dt.hour
dt.minute
dt.second
dt.microsecond
dt.tzinfo

获取日期

1
dt.date()

获取时间

无时区

1
dt.time()

有时区

1
dt.timetz()

获取日期和时间元祖

无时区

1
dt.timetuple()

有时区

UTC

1
dt.utctimetuple()

增减年月日时分秒毫秒微秒

1
2
3
4
5
6
7
8
dt = dt + datetime.timedelta(year=1)
dt = dt + datetime.timedelta(month=1)
dt = dt + datetime.timedelta(days=1)
dt = dt + datetime.timedelta(hours=1)
dt = dt + datetime.timedelta(minutes=1)
dt = dt + datetime.timedelta(seconds=1)
dt = dt + datetime.timedelta(milliseconds=1)
dt = dt + datetime.timedelta(microseconds=1)
1
2
3
4
5
6
7
8
dt = dt - datetime.timedelta(year=1)
dt = dt - datetime.timedelta(month=1)
dt = dt - datetime.timedelta(days=1)
dt = dt - datetime.timedelta(hours=1)
dt = dt - datetime.timedelta(minutes=1)
dt = dt - datetime.timedelta(seconds=1)
dt = dt - datetime.timedelta(milliseconds=1)
dt = dt - datetime.timedelta(microseconds=1)

比较日期和时间

1
2
3
4
5
6
7
8
dt1 = datetime.datetime.now()
dt2 = datetime.datetime.now()

dt1 < dt2
dt1 > dt2
dt1 >= dt2
dt1 <= dt2
dt1 == dt2

日期和时间与时间戳互转

日期和时间转换为时间戳

1
ts = dt.timestamp()

时间戳转换为日期和时间

<timestamp>:时间戳

1
dt = datetime.datetime.fromtimestamp(<timestamp>)

指定时区

<timezone>:时区

1
2
ts = datetime.datetime.now().timestamp()
dt = datetime.datetime.fromtimestamp(ts, <timezone>)
UTC
1
2
ts = datetime.datetime.now().timestamp()
dt = datetime.datetime.utcfromtimestamp(ts)

格式化日期和时间

占位符 备注
%y 年(00~99)
%Y 年(0000~9999)
%m 月(01~12)
%d 天(0~1)
%H 时(0~23)
%M 分(00~59)
%S 秒(00~59)
%a 本地的简化星期名
%A 本地的完整星期名
%b 本地的简化月份名
%B 本地的完整月份名
%p 本地的A.M.P.M.等价符

日期和时间转换为字符串

1
str = dt.strftime("%Y-%m-%d %H:%M:%S")

字符串转换为日期和时间

1
dt = datetime.datetime.strptime("2016-01-02 15:04:05", "%Y-%m-%d %H:%M:%S")

完成

参考文献

菜鸟笔记
CSDN——洛城-sola
CSDN——Asher117
PHP中文网——藏色散人