novafluxx
novafluxx

Reputation: 139

Slicing and Replacing Unicode String Characters

I have the following loop I'm trying to use to replace characters in a unicode string. The data I'm getting for this loop is in the following format: YYYY-MM-DD HH:MM:SS

This data is apparently stored in UTC, so when I grab it and append these times & dates to my list appts_list its 4 hours ahead.

I've gotten as far as slicing the unicode string and doing the math on these characters and getting what would be the correct hour I need, but I'm having a problem getting that back into a string so I can write it to my list appts_list.

I'm getting TypeError when I try to write the integer for the correct hour time_slice_int back into the original string. I decided to try to put the entire string into a list and change them there, but that isn't working either.

Ideally I want an appointment for '2013-06-28 15:30:00' to be entered into my appts_list as '2013-06-28 11:30:00'.

The print statements are there for me to debug as I ran it. They are not necessary for the final version.

Anyone have any suggestions or solutions?

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

Upvotes: 1

Views: 286

Answers (1)

Ashwini Chaudhary
Ashwini Chaudhary

Reputation: 251166

You should use the datetime module here:

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

datetime.strptime returns a datetime object:

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

Now decrease 4 hours from the above datetime object(d) using timedelta and assign the new object to a variable:

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

Now use datetime.strftime to get a string of required format:

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

Upvotes: 2

Related Questions