diff --git a/google/cloud/spanner_v1/_helpers.py b/google/cloud/spanner_v1/_helpers.py index 4ac13f7c6b..79a387eac6 100644 --- a/google/cloud/spanner_v1/_helpers.py +++ b/google/cloud/spanner_v1/_helpers.py @@ -118,7 +118,7 @@ def _make_value_pb(value): if isinstance(value, datetime_helpers.DatetimeWithNanoseconds): return Value(string_value=value.rfc3339()) if isinstance(value, datetime.datetime): - return Value(string_value=_datetime_to_rfc3339(value)) + return Value(string_value=_datetime_to_rfc3339(value, ignore_zone=False)) if isinstance(value, datetime.date): return Value(string_value=value.isoformat()) if isinstance(value, six.binary_type): diff --git a/tests/unit/test__helpers.py b/tests/unit/test__helpers.py index 5d6b015505..d554f3f717 100644 --- a/tests/unit/test__helpers.py +++ b/tests/unit/test__helpers.py @@ -215,6 +215,18 @@ def test_w_datetime(self): self.assertIsInstance(value_pb, Value) self.assertEqual(value_pb.string_value, datetime_helpers.to_rfc3339(now)) + def test_w_timestamp_w_tz(self): + import datetime + import pytz + from google.protobuf.struct_pb2 import Value + + when = datetime.datetime( + 2021, 2, 8, 0, 0, 0, tzinfo=pytz.timezone("US/Mountain") + ) + value_pb = self._callFUT(when) + self.assertIsInstance(value_pb, Value) + self.assertEqual(value_pb.string_value, "2021-02-08T07:00:00.000000Z") + def test_w_numeric(self): import decimal from google.protobuf.struct_pb2 import Value