python - Python datetime 格式化字符串转换-24 小时时间问题
问题描述
我需要将特定格式的字符串转换为另一个。
Source:
2018-08-10 9:00 PM - 9:40 PM
Target:
2018-08-10 21:00:00
我写了以下内容:
def startofappt(strv):
return strv.split(' - ')[0]
def convCalDate(dts, tms):
# 2018-08-08 5:50 PM
from datetime import datetime, date, time
dt = datetime.strptime(str(dts) + ' ' + str(startofappt(tms)), "%Y-%m-%d %H:%M %p")
return str(dt)
import datetime
datetoday = datetime.date.today()
from datetime import datetime, date, time
appointments_set = appointment.objects.filter(docid=11)
for appt in appointments_set:
if appt.date > datetoday:
print("Upcoming: ", appt.date, appt.time, convCalDate(appt.date, appt.time))
else:
print("Other:",appt.date, appt.time, convCalDate(appt.date, appt.time ))
不幸的是,我遇到了 24 小时制的问题。
输出:
Upcoming: 2018-08-10 9:00 PM - 9:40 PM 2018-08-10 09:00:00
Other: 2018-08-07 9:40 PM - 10:20 PM 2018-08-07 09:40:00
Other: 2018-08-07 9:00 PM - 9:40 PM 2018-08-07 09:00:00
Upcoming: 2018-08-08 5:50 PM - 6:10 PM 2018-08-08 05:50:00
Upcoming: 2018-08-08 6:10 PM - 6:30 PM 2018-08-08 06:10:00
我究竟做错了什么?
解决方案
您能否尝试将您的日期时间读取为 12 小时格式的日期时间,并在返回日期时将其返回为
def convCalDate(dts, tms):
from datetime import datetime, date, time
dt = datetime.strptime(str(dts) + ' ' + str(startofappt(tms)), "%Y-%m-%d %I:%M %p")
return str(dt)
print convCalDate("2018-08-10", "9:00 PM - 9:40 PM") #returns 2018-08-10 21:00:00
print convCalDate("2018-08-10", "9:00 AM - 9:40 PM") #returns 2018-08-10 09:00:00
希望能帮助到你
推荐阅读
- django - Django-Rest-Framework 自定义用户没有散列密码(序列化程序问题)
- puppeteer - nodeId 到元素句柄
- android - Crashlytics 崩溃报告提到了 XposedBridge
- alexa - Alexa 是否仍在请求中发送视口数据?
- angular - Cannot read property ‘email’ Auth0
- vue.js - 为什么在 Vue 中使用模态时我的 v-if 不触发?
- python - 如何以 Viewclass 作为按钮从 RecycleView 获取实例?
- java - 方法中类型参数的限制
- javascript - 我怎样才能让我的模糊动画每次都能更快地工作?
- css - 如何更改css模态框图形显示宽度?