On Mon, Sep 10, 2012 at 3:09 AM, Jiang, Yunhong <yunhong.ji...@intel.com> wrote:
> Hi, Eoghan and all,
>
>         When I implement an enhancement to trusted_filter, I need utilize 
> timeutils() to parse ISO time. However, I suspect there is one potential 
> issue in normalize_time() and want to get some input from your side.
>
>         In normalize_time(), if the parameter "timestamp" is an aware object 
> (http://docs.python.org/library/datetime.html) , it's output will vary 
> depends on the input. If the timestamp is UTC time, it will be return as is 
> without convention, i.e still an aware object. However, if it's not an UTC 
> time, it will be converted to be a naive object.
>         This mean that the function will return different type depends on 
> input, that's not so good IMHO.
>
>         The worse is, any compare/substract between naïve object and aware 
> object will fail. Because the timeutils.utcnow() and datetime.datetime.now() 
> returns naive object, so compare/substract between the uctnow() and 
> normalize_time() may fail, or not, depends on input from the API user. I'm a 
> bit surprised that changes-since works on such situation :)
>
>         I suspect this is caused by the "if offset". When timestamp is naïve 
> object, the offset is None. Thus check "if offset" will avoid operation type 
> exception. However, if the timestamp is UTC time, the offset will be 
> date.timeslot(0), which will return false also for "if offset".
>
>         Are there any special reason that we need keep aware object if input 
> is at UTC time already? Can I changes the function to always return naive 
> object? If yes, I can create a patch for it.

You are probably better off creating an aware datetime object, and
using them pervasively across the codebase, than using naive objects.
As you note, they are not interoperable, and I've seen countless bugs
where folk try to mix and match. If we want to show local date time to
users *anywhere*, we'll need TZ aware objects, which is why that
variation is the one to standardise on. Otherwise, you end up with
multiple conversion points, and you can guarantee that at least one
will get it wrong.

-Rob

_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to