最近coding时遇到一个需求,需要输出一个时间格式为年月日,但是有点怪的是他需要的格式如下:2020/05/7
即为月前面保留前置0,day前去掉前置0,自己找了下,顺便总结了时间格式化的各个方法
首先时间需要先引入时间库,但是一般只需要datetime库里的datetime方法就够了from datetime import datetime,这个也是为了加快导入库的时间,但是尽量都选择直接导入整个库import datetime,这里做区别是为了下面各个类方法的调用格式统一
我这边只介绍年月日时分秒和week的格式化操作
%y 显示(00 - 99) 之间的年份,例如:2020年5月7日,则显示结果为20
>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%y')
'20'
%Y显示完整年份,例如:2020年5月7日,则显示结果为2020
>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%Y')
'2020'
%m 显示1-12之间的月份
>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%m')
'05'
%M 显示00-59之间的分钟数
>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%M')
'06'
%d 显示1-31之间的天数
>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%d')
'07'
%w 显示一周中的第几天,其中星期天为0,星期一为1
>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%w')
'2'
%H 以24小时制显示小时
>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%H')
'21'
%I 以12小时制的方式显示当前小时
>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%I')
'09'
%S 显示0-59之间的秒数
>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%S')
'29'
只要记住常见格式即可(注意大小写)
以上的年月日和时分秒格式化输出值小于10的会有前置0
且输出的时间格式默认为str类型,使用datetime.datetime.now().strftime()方法
now_ms = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(now)
>>>>2020-05-07 21:18:39
当然符合格式的str类型时间字符串也可以转化为时间类型,使用datetime.datetime.strptime()
ta_dt = datetime.datetime.strptime("2020-05-07 19:32:41", '%Y-%m-%d %H:%M:%S')
print(ta_dt)
>>>>2020-05-07 19:32:41
剩下就就是我们今天的主角timetuple()方法
time = datetime.datetime.now().timetuple()
VersionInfo = str(time.tm_year) +"/"+ str(time.tm_mon) +"/"+ str(time.tm_mday) +" "+ str(time.tm_hour) +":"+ str(time.tm_min)
print(time)
print(VersionInfo)
>>>>time.struct_time(tm_year=2020, tm_mon=5, tm_mday=7, tm_hour=22, tm_min=4, tm_sec=14, tm_wday=3, tm_yday=128, tm_isdst=-1)
>>>>2020/5/7 22:10
经过分析就可以得到timetuple()方法是通过:在类似tm_year这样的时间格式里进行匹配,捞出来匹配的时间后再按照自定义的方式进行拼接,当然你应该发现的通过这种方法抓出来的时间格式是没有前置0的
所以上面的问题就很好解决的了
import datetime
now = datetime.datetime.now().strftime("%Y-%m")
time = datetime.datetime.now().timetuple()
VersionInfo = now +"-"+ str(time.tm_mday)
print(VersionInfo)
>>>>2020-05-7