快捷搜索: 王者荣耀 脱发

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
经验分享 程序员 微信小程序 职场和发展