我对此的输入格式为07:05:09 PM 预期产出:
19:05:09
输出得到:
19:5:9
def timeConversion(s):
if "AM" in s:
print(s[1:8])
else:
string=s.split(':')
print(string)
string.append(string[2][0:2])
string.remove(string[2])
print(string)
date=list(map(int, string))
print(date)
a=date[0]+12
b='%s:%s:%s' % (a, date[1], date[2])
return b
我的问题是当我使用map将日期从字符串转换为int时,零没有被拾取,有没有办法得到这样的整数???
答案 0 :(得分:0)
如果您不想使用自定义功能格式化日期时间,则可以在打印时格式化字符串以获得预期输出。替换此行
b='%s:%s:%s' % (a, date[1], date[2])
用这个:
b='%02d:%02d:%02d' % (a, date[1], date[2])
答案 1 :(得分:0)
有将24小时转换为12小时的功能:
通过
strptime()
将字符串加载到日期时间对象中,然后通过strftime()
以所需格式转储:
from datetime import datetime
d = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
d # d is a string '2016-04-28 07:46:32'
datetime.strptime(d, "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d %I:%M:%S %p")
'2016-04-28 07:46:32 AM'
请注意,
%I
此处为12小时制
Conversion of 24 hours date/time to 12 hours format and vice-versa
如果您想使用您的解决方案,可以将前导零添加到How to add Trailing zeroes to an integer中的整合商中:
numbers = [1, 19, 255]
numbers = [int('{:<03}'.format(number)) for number in numbers]
中的前导零