使用map将字符串转换为int不包括零

时间:2017-10-17 17:11:49

标签: python python-3.x

我对此的输入格式为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时,零没有被拾取,有没有办法得到这样的整数???

2 个答案:

答案 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]

您可以打印Display number with leading zeros

中的前导零