切片和替换Unicode字符串字符

时间:2013-06-27 17:54:23

标签: python python-2.7 unicode slice

我有以下循环我试图用来替换unicode字符串中的字符。我为此循环获取的数据采用以下格式:YYYY-MM-DD HH:MM:SS

这些数据显然是以UTC格式存储的,所以当我抓住它并附加这些时间和时间。请提前4小时到我的清单appts_list

我已经完成了切割unicode字符串并对这些字符进行数学计算并得到我需要的正确小时数,但是我遇到问题将其重新转换为字符串以便我可以编写它到我的列表appts_list

当我尝试将正确的小时time_slice_int的整数写回原始字符串时,我收到了TypeError。我决定尝试将整个字符串放入列表并在那里进行更改,但这也无效。

理想情况下,我希望将“2013-06-28 15:30:00”的预约作为“2013-06-28 11:30:00”输入我的appts_list

打印语句可供我调试,因为我运行它。它们不是最终版本所必需的。

有人有任何建议或解决方案吗?

for appt in todays_appts:
        time = appt['apptdateourtime_c']
        time_slice = time[11:13]
        time_slice_int = int(time_slice)
        time_slice_int -= 4
        print(time_slice_int)
        appt_time = list(time)
        print(appt_time)
        print(appt_time[11:13])
        #appt_time[11:13] = time_slice_int
        #appts_list.append()
        print('AppointmentScheduled')
        #print(appt['apptdateourtime_c'])
        #print(time)
        print('')

1 个答案:

答案 0 :(得分:2)

您应该在此处使用datetime模块:

>>> from datetime import datetime, timedelta
>>> strs = '2013-06-28 15:30:00'
>>> d = datetime.strptime(strs, "%Y-%m-%d %H:%M:%S")

datetime.strptime返回一个日期时间对象:

>>> d
datetime.datetime(2013, 6, 28, 15, 30)
>>> d.hour
15
>>> d.month
6

现在使用timedelta从上述日期时间对象(d)减少4小时,并将新对象分配给变量:

>>> d1 = d - timedelta(hours = 4)

现在使用datetime.strftime获取所需格式的字符串:

>>> datetime.strftime(d1,"%Y-%m-%d %H:%M:%S")
'2013-06-28 11:30:00'