python中日期和时间格式化及其去掉前置0的方法
最近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