时间格式化操作

时间:2021-07-08 00:41:42

1.时间表示形式

(1).获得当前时间的时间戳(自1970至今的秒数),类型浮点型
>>> import time
>>> time.time()
1510638986.3258848

>>> type(time.time())
<class 'float'>
(2).获得当前时间的本地(UTC + x)时间,类型time.struct_time
>>> time.localtime()
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=14, tm_hour=13, tm_min=59, tm_sec=7, tm_wday=1, tm_yday=318, tm_isdst=0)

# tm_wday星期[0,6];0表示星期天
# tm_isdst夏令时,0表示未开启夏令时

>>> type(time.localtime())
<class 'time.struct_time'>

2.时间表现形式之间相互转换

时间格式化操作

(1).自定义格式去输出时间的字符串;time.strftime(format, t)
# t可以是元组,也可以是time.struct_time
>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
'2017-11-14 14:12:33'

>>> time.strftime('%Y-%m-%d %H:%M:%S',(2017,11,14,13,59,7,1,318,0))
'2017-11-14 13:59:07'
(2).将特定格式的时间字符串转换为时间;time.strptime(t_str, format)
# t_str的格式要和format一一对应,否则转换报错
>>> time.strptime('2017-11-14 13:59:07', '%Y-%m-%d %H:%M:%S')
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=14, tm_hour=13, tm_min=59, tm_sec=7, tm_wday=1, tm_yday=318, tm_isdst=-1)
(3).time.struct_time转换为时间戳秒;time.mktime(t)
# t可以是元组,也可以是time.struct_time
>>> time.mktime(time.localtime())
1510640755.0

>>> time.mktime((2017,11,14,13,59,7,1,318,0))
1510639147.0
(4).时间戳秒转换为time.struct_time;time.localtime(t)
>>> time.localtime(1510639147.0)
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=14, tm_hour=13, tm_min=59, tm_sec=7, tm_wday=1, tm_yday=318, tm_isdst=0)

3.format参照表

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

4.将字符串转换成日期 

t_str = '2012-03-05 16:26:23'
d = datetime.datetime.strptime(t_str, '%Y-%m-%d %H:%M:%S')

5.将日期截取为日期和时间两部分

第一种方式:

print(d.strftime("%Y-%m-%d"))
print(d.strftime("%H:%M:%S"))

第二种方式:

print(str(d).split(" ")[0])
print(str(d).split(" ")[1])