9c4aefb8ea
The iso8601 lib introduced a change such that if running on python 3.2 or later it internally uses the python timezone information instead of its own implementation. This does not change direct date handling, but when converting this value there is a slight difference where now python 2.x will show UTC times as "UTC", but on python 3 they will end up with "UTC+00:00". The to_primitive call for DateTime fields was doing an exact match on "UTC" to determine whether to include "Z" in the resulting string. This updates that handling to recognize either of the new values. Change-Id: I71b58e8fd8fee8a57ee275ff3e0b77f165eca836 Closes-bug: #1744160
31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
# Copyright 2010 United States Government as represented by the
|
|
# Administrator of the National Aeronautics and Space Administration.
|
|
# Copyright 2011 Justin Santa Barbara
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
"""Utilities and helper functions."""
|
|
|
|
# ISO 8601 extended time format without microseconds
|
|
_ISO8601_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S'
|
|
|
|
|
|
def isotime(at):
|
|
"""Stringify time in ISO 8601 format."""
|
|
st = at.strftime(_ISO8601_TIME_FORMAT)
|
|
tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC'
|
|
# Need to handle either iso8601 or python UTC format
|
|
st += ('Z' if tz in ['UTC', 'UTC+00:00'] else tz)
|
|
return st
|