关于日期的一些操作:基于datetime模块

time模块可以很好地获取时间戳(time.time()),并进行格式化处理。但是,如果想要以更方便的格式显示日期,或者对日期进行加减运算(如获取167天前是什么日期,89天后是什么日期),time模块就无能为力了。这个时候就需要用到datetime模块。
datetime模块也有自己的datetime数据类型,其值表示一个特定的时刻。如

import datetime # 导入模块
datetime.datetime.now() # 获取当前时间
t0 = datetime.datetime(2020,1,1,13,45,34)
t0.year,t0.month,t0.day,t0.hour,t0.minute,t0.second # 年,月,日,时,分,秒

image.png

日期间加减运算

datetime模块中提供了time.delta数据类型,该类型表示一段时间,而非一个具体的时刻,使用可以用于时间段之间的加减。如

delta = datetime.timedelta(days = 89,hours = 10,minutes = 3,seconds = 47)
# 这里delta表示89天,10小时,3分钟,47秒的一段时间
dt = datetime.datetime.now() + delta
dt

image.png

现在来回答我们开头提出的两个问题。

  1. 167天前是什么日期
dt = datetime.datetime.now() + datetime.timedelta(days = -167)
dt

image.png

  1. 89天后是什么日期
dt = datetime.datetime.now() + datetime.timedelta(days = 89)
dt

image.png

格式化日期

将datetime类型转换为字符串

方法:使用strftime函数

dt = datetime.datetime(2020,2,14,15,3,27)
res = dt.strftime('%Y-%m-%d %H:%M:%S')
# 或者 res = datetime.datetime.strftime(dt,'%Y-%m-%d %H:%M:%S')
print(type(res),res)

image.png

将字符串转换为datetime类型

方法:使用strptime函数

dtstr = '2020-02-14 15:03:27'
res = datetime.datetime.strptime(dtstr,'%Y-%m-%d %H:%M:%S')
print(type(res),res)

image.png

日期格式化符号

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章