2021-04-10 昨天、今天、明天|Python用datetime库自定义函数返回日期格式字符串
发布日期:2021-05-04 07:31:32 浏览次数:25 分类:技术文章

本文共 3309 字,大约阅读时间需要 11 分钟。

今天的日期

datetime.date.today() 或 datetime.datetime.now()

>>> import datetime>>> datetime.date.today()datetime.date(2021, 4, 10)>>> d=datetime.date.today()>>> print(d)2021-04-10>>> type(d)

日期的偏移

用函数 datetime.timedelta(days=diff) 来实现:

>>> import datetime>>> datetime.date.today()datetime.date(2021, 4, 10)>>> d=datetime.date.today()>>>>>> d+datetime.timedelta(5)datetime.date(2021, 4, 15)>>> d-datetime.timedelta(5)datetime.date(2021, 4, 5)>>> d+datetime.timedelta(-5)datetime.date(2021, 4, 5)

日期型转日期字符串——

昨天、今天、明天的字符串形式

方法一:

用format()函数转换,日期分隔符换成“-”也可以: '{0:04}-{1:02}-{2:02}'

>>> def strDate(diff=0):    '''返回今天或前/后diff天的日期格式字符串'''    import datetime as dt    d=dt.date.today()+dt.timedelta(days=diff)    return '{0:04}/{1:02}/{2:02}'.format(d.year,d.month,d.day)>>> strDate(-1)'2021/04/09'>>> strDate()'2021/04/10'>>> strDate(1)'2021/04/11'>>>>>> strDate(3)'2021/04/13'>>> strDate(30)'2021/05/10'>>> strDate(31)'2021/05/11'>>> strDate(365)'2022/04/10'>>> strDate(366)'2022/04/11'>>> strDate(-3)'2021/04/07'>>> strDate(-30)'2021/03/11'>>> strDate(-31)'2021/03/10'>>> strDate(-365)'2020/04/10'>>> strDate(-366)'2020/04/09'>>>

方法二:除了用format()函数转换外,datetime 自带转换方法: .strftime()

dDate = dateString.strftime('格式化串')

>>> import datetime as dt>>> d=dt.date.today()>>> ddatetime.date(2021, 4, 10)>>> type(d)
>>>>>> d=d.strftime('%Y-%m-%d')>>> d'2021-04-10'>>> type(d)

方法三: f-string  (版本要求: Python3.6+)

>>> import datetime as dt>>> d=dt.datetime.today()>>> ddatetime.datetime(2021, 4, 10, 11, 59, 54, 531850)>>> f'{d.year}/{d.month:02}/{d.day:02}''2021/04/10'>>> f'{d.year}-{d.month:02}-{d.day:02}''2021-04-10'

 日期字符串转日期型

datetime.datetime.strptime(dateString,'格式化串')

>>> dateString = '2020/3/23'>>> datetime.datetime.strptime(dateString, '%Y/%m/%d')datetime.datetime(2020, 3, 23, 0, 0)>>> dateString = '2020-03-23'>>> datetime.datetime.strptime(dateString, '%Y/%m/%d')Traceback (most recent call last):  File "
", line 1, in
datetime.datetime.strptime(dateString, '%Y/%m/%d') File "E:\Python\lib\_strptime.py", line 568, in _strptime_datetime tt, fraction, gmtoff_fraction = _strptime(data_string, format) File "E:\Python\lib\_strptime.py", line 349, in _strptime raise ValueError("time data %r does not match format %r" %ValueError: time data '2020-03-23' does not match format '%Y/%m/%d'>>> datetime.datetime.strptime(dateString, '%Y-%m-%d')datetime.datetime(2020, 3, 23, 0, 0)# 错: datetime.datetime.strptime('2020/03/23', '%Y-%m-%d')# 错: datetime.datetime.strptime('2020-03-23', '%Y/%m/%d')# 参数的格式必须前后一致,否则报错 time data format not match

附一: 日期格式化符

代码 说明
%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 当前时区的名称
%% %号本身

附二: datetime库类列表

类名称 描述
datetime.date 表示日期,常用的属性有:year, month和day
datetime.time 表示时间,常用属性有:hour, minute, second, microsecond
datetime.datetime 表示日期时间,date/time兼而有之
datetime.timedelta 表示两个date、time、datetime实例之间的时间间隔,分辨率(最小单位)可达到微秒
datetime.tzinfo 时区相关信息对象的抽象基类。它们由datetime和time类使用,以提供自定义时间的而调整。
datetime.timezone Python 3.2中新增的功能,实现tzinfo抽象基类的类,表示与UTC的固定偏移量

 

上一篇:2021-04-11 Python tkinter 之 Scrollbar 与 Listbox、Entry 等控件联用
下一篇:2021-04-07 Python 获取“我的文档”等win系统路径的几种方法

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月07日 04时50分21秒