python - 如果转换已经完成,如何以时间格式输入数字?
问题描述
我正在尝试获取一个字符串并转换为 24 小时制。例如,如果给我字符串“07:05:45PM”,它应该返回“19:05:45”。我已经完成了所有必要的转换,我只是不确定我应该如何将它们放在一起并拥有它,以便如果只有 5 分钟或 5 秒,它会像“xx:05:06”这样放置一个零.
def timeConversion(s):
nums = s[:8]
hh,mm,ss = [v for v in nums.split(":")]
time = s[8:]
if time == 'AM':
return nums
else:
total = (int(hh) * 3600 + int(mm) * 60 + int(ss)) + 43200
if s == "12:00:00PM":
return nums
hh = total // 3600
mm = total // 60 % 60
ss = total % 60
print(timeConversion("07:05:45PM"))
解决方案
只有小时数和后缀在您的输出中具有任何意义。关键是 12AM 是 00,而 12PM 是 12。12:00 并不是唯一值得这种待遇的时间:12:01 也是如此。使用模运算符完全避免任何特殊情况:
def time_conversion(s):
hh = int(s[:2]) % 12 # this is the magical part 12->0
mmss = s[2:8]
suffix = s[8:].strip().upper()
if suffix == 'PM':
hh += 12
return f'{hh:02d}{mmss}'
推荐阅读
- asp.net-mvc - ASPNET MVC 3 上的 WindowsAuthentication 不起作用(IsAuthenticated 始终为假)
- image - Flutter:如何在图像上创建文本,可通过手柄 4 个点调整大小
- accessibility - 网络可访问性 - 在按钮悬停时播放音频
- c - 为什么我的数组的总和(使用指针计算)不正确?
- asp.net-core - 如何迭代表单元素,然后将它们传递给 ASP.NET Core 中的控制器?
- python - 在 Python 中读取 JSON 文件
- primefaces - 如何将 themeSwitcher 与 primefaces 集成到菜单栏中?
- angular - Chrome Headless 83.0.4103.116 (Linux x86_64) 错误已断开连接,因为 30000 毫秒内没有消息,Angular 8
- javascript - 反应导航 5 错误绑定元素“导航”隐式具有“任何”类型.ts
- reactjs - Electron/React 应用程序到 Json 文件的相对路径在生产中不起作用