def _adjust_phone_datetime_to_utc(value, phone_tz): """ put a phone datetime (like timeEnd, modified_on, etc.) into UTC input and output are both timezone-naive """ phone_tz = _soft_assert_tz_not_string(phone_tz) assert value.tzinfo is None if phone_timezones_have_been_processed(): return value else: return _adjust_datetime_to_utc(value, phone_tz)
def _adjust_utc_datetime_to_phone_datetime(value, phone_tz): """ adjust a UTC datetime so that it's comparable with a phone datetime (like timeEnd, modified_on, etc.) returns a timezone-aware date """ phone_tz = _soft_assert_tz_not_string(phone_tz) assert value.tzinfo is None if phone_timezones_have_been_processed(): return value.replace(tzinfo=pytz.utc) else: return _adjust_utc_datetime_to_timezone(value, phone_tz)
def test_phone_to_server(self): cases = [ ('2015-03-20T08:00:00', pytz.FixedOffset(-4 * 60), '2015-03-20T12:00:00'), ('2015-03-20T20:30:00', pytz.FixedOffset(-4 * 60), '2015-03-21T00:30:00'), ] for in_, tz, out in cases: phone_dt = dateutil.parser.parse(in_) server_dt = PhoneTime(phone_dt, tz).server_time().done() if phone_timezones_have_been_processed(): # no change self.assertEqual(server_dt.isoformat(), in_) else: self.assertEqual(server_dt.isoformat(), out)