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
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值