【笔记】Python3的日期和时间

前言

Python3的日期和时间学习笔记

time

引入模块

1
import time

获取当前时间的时间戳

1
time.time()

将当前时间转换为UTC时间的时间元祖

1
time.gmtime()

将指定时间戳转换为UTC时间的时间元祖

<timestamp>:时间戳毫秒值

1
time.gmtime(<timestamp>)

获取当前时间转换为本地时间的时间元祖

1
time.localtime()

将指定时间戳转换为本地时间的时间元祖

1
t = time.localtime(time.time())

从时间元祖中获取元素

1
t.tm_year

  • 取值范围[1,12]
1
t.tm_mon

月中日

  • 取值范围[1,31]
1
t.tm_mday

年中日

  • 取值范围[1,366]
1
t.tm_yday

  • 取值范围[0,23]
1
t.tm_hour

  • 取值范围[0,59]
1
t.tm_min

  • 取值范围[0,60](含闰秒[0,61])
1
t.tm_sec

1
t.tm_wday

是否时夏令时

取值

-1:缺省值,未知
1:是夏令时
0:不是夏令时

1
t.tm_isdst

格式化时间

将时间格式转换成字符串

内置
1
time.asctime(t)
自定义
1
time.strftime("%Y-%m-%d %H:%M:%S", t)

将字符串转换成时间格式

内置

<str>:字符串

1
t = time.mktime(time.strptime(<str>,"%a %b %d %H:%M:%S %Y"))
自定义

<str>:字符串

1
t = time.mktime(time.strptime(<str>,"%Y-%m-%d %H:%M:%S"))

datetime

引入依赖

1
import datetime

参数取值范围

取值范围

year:[MINYEAR,MAXYEAR]
month:[1,12]
day:[1,当前月的天数最大值]
hour:[0,23]
minute:[0,59]
second:[0,59]
microsecond:[0,1000000]

获取当前时间的datetime对象

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

获取时间戳

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

指定时区

<timezone>:时区

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

UTC

1
dt = datetime.datetime.utcnow()

获取指定时间的datetime对象

2006:指定年
1:指定月
2:指定日
15:指定时
4:指定分
5:指定秒

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)

时间戳转换为datetime对象

<timestamp>:时间戳

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

指定时区

<timezone>:时区

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

UTC

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

date对象和time对象转化为datetime对象

<date>:日期对象
<time>:时间对象

1
dt = datetime.datetime.combine(<date>, <time>)

将时间格式的字符串转化为datetime对象

<date_str>:日期格式的字符串
<format>:格式化的格式

1
dt = datetime.datetime.strptime(<date_str>, <format>)

对象的属性和方法

属性

返回对象的年
1
dt.year
返回对象的月
1
dt.month
返回对象的日
1
dt.day
返回对象的时
1
dt.hour
返回对象的分
1
dt.minute
返回对象的秒
1
dt.second
返回对象的微秒
1
dt.microsecond
返回对象的时区
1
dt.tzinfo

方法

获取date对象
1
dt.date()
获取time对象(时区为空)
1
dt.time()
获取time对象(时区不为空)
1
dt.timetz()
以元祖的方式获取对象(不含时区)
1
dt.timetuple()
以元祖的方式获取对象(不含时区,UTC时区)
1
dt.utctimetuple
获取天数
  • 返回自从0001-01-01开始的天数
1
dt.toordinal()
获取星期数
  • 返回星期几,取值范围为[0,6],0表示星期1
1
dt.weekday()
以元祖的方式获取格林威治时间
1
dt.isocalendar()
返回表示日期和时间的字符串
1
dt.isoformat([])
获取24字符长度的时间字符串
1
dt.ctime()
获取指定格式的时间字符串
1
dt.strftime("%Y-%m-%d %H:%M:%S")
格式化控制符
格式化控制符 备注
%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.等价符

datetime对象计算

增加指定时间量

增加1天
1
dt + datetime.timedelta(days=1)
增加1小时
1
dt + datetime.timedelta(hours=1)
增加1分钟
1
dt + datetime.timedelta(minutes=1)
增加1秒
1
dt + datetime.timedelta(seconds=1)
增加1毫秒
1
dt + datetime.timedelta(milliseconds=1)
增加1微秒
1
dt + datetime.timedelta(microseconds=1)

减少指定时间量

减少1天
1
dt - datetime.timedelta(days=1)
减少1小时
1
dt - datetime.timedelta(hours=1)
减少1分钟
1
dt - datetime.timedelta(minutes=1)
减少1秒
1
dt - datetime.timedelta(seconds=1)
减少1毫秒
1
dt - datetime.timedelta(milliseconds=1)
减少1微秒
1
dt - datetime.timedelta(microseconds=1)

calendar

引入模块

1
2
import time
import calendar

获取当前时间的时间戳

1
2
t = time.gmtime()
ts = calendar.timegm(t)

完成

参考文献

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