Python中的日期与时间常用方法总结

datetime模块

时间格式化成字符串

>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2017, 11, 24, 16, 14, 18, 307941)
>>> now.strftime("%Y")
'2017'
>>> now.strftime("%Y-%m")
'2017-11'
>>> now.strftime("%Y-%m-%d")
'2017-11-24'
>>> now.strftime("%Y-%m-%d %H")
'2017-11-24 16'
>>> now.strftime("%Y-%m-%d %H:%m")
'2017-11-24 16:11'
>>> now.strftime("%Y-%m-%d %H:%M")
'2017-11-24 16:14'
>>> now.strftime("%Y-%m-%d %H:%M:%s")
'2017-11-24 16:14:1511511258'
>>> now.strftime("%Y-%m-%d %H:%M:%S")
'2017-11-24 16:14:18'
>>> now.strftime("%Y-%m-%d %H:%M:%S")
'2017-11-24 16:14:18'
>>> now.strftime("%Y-%m-%d %H:%M:%S")
'2017-11-24 16:14:18'

字符串转为datetime对象

>>> a='2017-11-24 16:14:18'
>>> a = datetime.datetime.strptime(a,"%Y-%m-%d %H:%M:%S")
>>> a
datetime.datetime(2017, 11, 24, 16, 14, 18)
>>> a.day
24
>>> a.day+10
34
>>> a.day*20
480

时间对象的计算

增加减少计算

>>> a
datetime.datetime(2017, 11, 24, 16, 14, 18)
>>> diff=datetime.timedelta(days=3)  # 三天后的日期
>>> a+diff
datetime.datetime(2017, 11, 27, 16, 14, 18)
>>> diff=datetime.timedelta(days=10)  # 十天后
>>> a+diff
datetime.datetime(2017, 12, 4, 16, 14, 18)
  • 支持的参数:
    days=None seconds=None microseconds=None milliseconds=None minutes=None hours=None weeks=None

相差计算

>>> a
datetime.datetime(2017, 11, 24, 16, 14, 18)
>>> b = datetime.datetime.now()
>>> b-a
datetime.timedelta(0, 1184, 69232)
>>> c = b-a
>>> c.seconds
1184
>>> c.total_seconds()
1184.069232
>>> c.days
0

time模块

时间戳

>>> import time
>>> time.time()
1511512640.6861482

获取当前时间

time.localtime()
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=24, tm_hour=16, tm_min=39, tm_sec=23, tm_wday=4, tm_yday=328, tm_isdst=0)
>>> a = time.localtime()
>>> a.tm_year
2017
>>> a.tm_year+1
2018
>>> a.tm_hour+10
26

其他格式

>>> a = time.asctime()
>>> a
'Fri Nov 24 16:40:58 2017'

自定义格式

>>> time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
'2017-11-24 16:42:48'

>>> time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()) 
'Fri Nov 24 16:43:10 2017'

将字符串格式化为struct_time对象

>>> a = '2017-11-24 16:42:48'
>>> time.strptime(a,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=24, tm_hour=16, tm_min=42, tm_sec=48, tm_wday=4, tm_yday=328, tm_isdst=-1)
>>> b = time.strptime(a,"%Y-%m-%d %H:%M:%S")
>>> b.tm_mday
24

将time.struct_time对象转换为时间戳

>>> time.mktime(b)
1511512968.0

将 datetime 对象转化为时间戳格式

end_time = datetime.datetime.strptime("20180502202811", "%Y%m%d%H%M%S")
end_time = time.mktime(end_time.timetuple())

Python中支持的格式化符号整理

%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 当前时区的名称
%% %号本身
posted @ 2020-03-20 14:03  我的胡子有点扎  阅读(229)  评论(0编辑  收藏  举报