There is a problem here when we tried this. This assumes the incoming value is already a datetime. However there are times (e.g. schedule update) when the datetime gets passed as a string. Should check the type and parse as necessary.

I added something similar to the following and it worked correctly:
if isinstance(value, basestring):
    return timeutils.parse_isotime(value).replace(tzinfo=None)
elif isinstance(value, datetime.datetime):
    return value.replace(tzinfo=None)
else:
    raise Exception("Can't convert value (%s) to datetime" % value)