Last active
September 9, 2016 19:48
-
-
Save gene1wood/11386298 to your computer and use it in GitHub Desktop.
Generate RFC 3339 timestamp in Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# http://stackoverflow.com/a/39418771/168874 | |
from datetime import tzinfo, timedelta, datetime | |
import time as _time | |
ZERO = timedelta(0) | |
STDOFFSET = timedelta(seconds=-_time.timezone) | |
if _time.daylight: | |
DSTOFFSET = timedelta(seconds=-_time.altzone) | |
else: | |
DSTOFFSET = STDOFFSET | |
DSTDIFF = DSTOFFSET - STDOFFSET | |
class LocalTimezone(tzinfo): | |
def utcoffset(self, dt): | |
if self._isdst(dt): | |
return DSTOFFSET | |
else: | |
return STDOFFSET | |
def dst(self, dt): | |
if self._isdst(dt): | |
return DSTDIFF | |
else: | |
return ZERO | |
def tzname(self, dt): | |
return _time.tzname[self._isdst(dt)] | |
def _isdst(self, dt): | |
tt = (dt.year, dt.month, dt.day, | |
dt.hour, dt.minute, dt.second, | |
dt.weekday(), 0, 0) | |
stamp = _time.mktime(tt) | |
tt = _time.localtime(stamp) | |
return tt.tm_isdst > 0 | |
Local = LocalTimezone() | |
d = datetime.now(Local) | |
print d.isoformat('T') | |
# which returns | |
# 2014-04-28T15:44:45.758506-07:00 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment