You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
2 years ago
|
# 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)
|