From e8549ce53afe9ac01602aeb57cc55af06bc7738d 2013-07-03 19:11:43 From: MinRK Date: 2013-07-03 19:11:43 Subject: [PATCH] add IPython.utils.tz Basic support for tz-aware UTC methods on date time objects. The raw `utcfoo` methods still produce naïve objects, so they are wrapped in a simple zero-offset tz-aware object. This allows jsonutil to publish the timezone info, eliminating the ambiguity of naïve timestamps (Firefox assumes local time, WebKit UTC). --- diff --git a/IPython/utils/tz.py b/IPython/utils/tz.py new file mode 100644 index 0000000..b315d53 --- /dev/null +++ b/IPython/utils/tz.py @@ -0,0 +1,46 @@ +# encoding: utf-8 +""" +Timezone utilities + +Just UTC-awareness right now +""" + +#----------------------------------------------------------------------------- +# Copyright (C) 2013 The IPython Development Team +# +# Distributed under the terms of the BSD License. The full license is in +# the file COPYING, distributed as part of this software. +#----------------------------------------------------------------------------- + +#----------------------------------------------------------------------------- +# Imports +#----------------------------------------------------------------------------- + +from datetime import tzinfo, timedelta, datetime + +#----------------------------------------------------------------------------- +# Code +#----------------------------------------------------------------------------- +# constant for zero offset +ZERO = timedelta(0) + +class tzUTC(tzinfo): + """tzinfo object for UTC (zero offset)""" + + def utcoffset(self, d): + return ZERO + + def dst(self, d): + return ZERO + +UTC = tzUTC() + +def utc_aware(unaware): + """decorator for adding UTC tzinfo to datetime's utcfoo methods""" + def utc_method(*args, **kwargs): + dt = unaware(*args, **kwargs) + return dt.replace(tzinfo=UTC) + return utc_method + +utcfromtimestamp = utc_aware(datetime.utcfromtimestamp) +utcnow = utc_aware(datetime.utcnow)