1

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

这些数据显然是以 UTC 存储的,所以当我抓住它并将这些时间和日期附加到我的列表中appts_list时,它会提前 4 小时。

我已经对 unicode 字符串进行切片并对这些字符进行数学运算并获得了我需要的正确时间,但是我在将其恢复为字符串时遇到了问题,因此我可以将其写入我的列表appts_list.

当我尝试将正确小时的整数写time_slice_int回原始字符串时,我得到了 TypeError。我决定尝试将整个字符串放入一个列表并在那里更改它们,但这也不起作用。

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

当我运行它时,打印语句可供我调试。它们对于最终版本不是必需的。

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

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('')
4

1 回答 1

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

现在从上面的 datetime object( d) 中减少 4 小时,使用timedelta并将新对象分配给一个变量:

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

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

>>> datetime.strftime(d1,"%Y-%m-%d %H:%M:%S")
'2013-06-28 11:30:00'
于 2013-06-27T18:02:38.570 回答