| # 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() # type: ignore[abstract] | |
| 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) | |