def test_tz(self): t = "2014-02-01 09:00" ts = Timestamp(t) local = ts.tz_localize("Asia/Tokyo") self.assertEqual(local.hour, 9) self.assertEqual(local, Timestamp(t, tz="Asia/Tokyo")) conv = local.tz_convert("US/Eastern") self.assertEqual(conv, Timestamp("2014-01-31 19:00", tz="US/Eastern")) self.assertEqual(conv.hour, 19) # preserves nanosecond ts = Timestamp(t) + offsets.Nano(5) local = ts.tz_localize("Asia/Tokyo") self.assertEqual(local.hour, 9) self.assertEqual(local.nanosecond, 5) conv = local.tz_convert("US/Eastern") self.assertEqual(conv.nanosecond, 5) self.assertEqual(conv.hour, 19) # GH 8025 with tm.assertRaisesRegexp(TypeError, "Cannot localize tz-aware Timestamp, use " "tz_convert for conversions"): Timestamp("2011-01-01", tz="US/Eastern").tz_localize("Asia/Tokyo") with tm.assertRaisesRegexp(TypeError, "Cannot convert tz-naive Timestamp, use " "tz_localize to localize"): Timestamp("2011-01-01").tz_convert("Asia/Tokyo")
def test_tz(self): t = '2014-02-01 09:00' ts = Timestamp(t) local = ts.tz_localize('Asia/Tokyo') self.assertEqual(local.hour, 9) self.assertEqual(local, Timestamp(t, tz='Asia/Tokyo')) conv = local.tz_convert('US/Eastern') self.assertEqual(conv, Timestamp('2014-01-31 19:00', tz='US/Eastern')) self.assertEqual(conv.hour, 19) # preserves nanosecond ts = Timestamp(t) + offsets.Nano(5) local = ts.tz_localize('Asia/Tokyo') self.assertEqual(local.hour, 9) self.assertEqual(local.nanosecond, 5) conv = local.tz_convert('US/Eastern') self.assertEqual(conv.nanosecond, 5) self.assertEqual(conv.hour, 19) # GH 8025 with tm.assertRaisesRegexp(TypeError, 'Cannot localize tz-aware Timestamp, use ' 'tz_convert for conversions'): Timestamp('2011-01-01' ,tz='US/Eastern').tz_localize('Asia/Tokyo') with tm.assertRaisesRegexp(TypeError, 'Cannot convert tz-naive Timestamp, use ' 'tz_localize to localize'): Timestamp('2011-01-01').tz_convert('Asia/Tokyo')
def test_tz_convert_roundtrip(self): for tz in ["UTC", "Asia/Tokyo", "US/Eastern", "dateutil/US/Pacific"]: for t in ["2014-02-01 09:00", "2014-07-08 09:00", "2014-11-01 17:00", "2014-11-05 00:00"]: ts = Timestamp(t, tz="UTC") converted = ts.tz_convert(tz) reset = converted.tz_convert(None) self.assertEqual(reset, Timestamp(t)) self.assertTrue(reset.tzinfo is None) self.assertEqual(reset, converted.tz_convert("UTC").tz_localize(None))
def test_tz_convert_roundtrip(self): for tz in ['UTC', 'Asia/Tokyo', 'US/Eastern', 'dateutil/US/Pacific']: for t in ['2014-02-01 09:00', '2014-07-08 09:00', '2014-11-01 17:00', '2014-11-05 00:00']: ts = Timestamp(t, tz='UTC') converted = ts.tz_convert(tz) reset = converted.tz_convert(None) self.assertEqual(reset, Timestamp(t)) self.assertTrue(reset.tzinfo is None) self.assertEqual(reset, converted.tz_convert('UTC').tz_localize(None))
def test_tz_localize_roundtrip(self): for tz in ["UTC", "Asia/Tokyo", "US/Eastern", "dateutil/US/Pacific"]: for t in ["2014-02-01 09:00", "2014-07-08 09:00", "2014-11-01 17:00", "2014-11-05 00:00"]: ts = Timestamp(t) localized = ts.tz_localize(tz) self.assertEqual(localized, Timestamp(t, tz=tz)) with tm.assertRaises(TypeError): localized.tz_localize(tz) reset = localized.tz_localize(None) self.assertEqual(reset, ts) self.assertTrue(reset.tzinfo is None)
def test_conversion(self): # GH 9255 ts = Timestamp('2000-01-01') result = ts.to_pydatetime() expected = datetime.datetime(2000, 1, 1) self.assertEqual(result, expected) self.assertEqual(type(result), type(expected)) result = ts.to_datetime64() expected = np.datetime64(ts.value, 'ns') self.assertEqual(result, expected) self.assertEqual(type(result), type(expected)) self.assertEqual(result.dtype, expected.dtype)
def test_tz_localize_roundtrip(self): for tz in ['UTC', 'Asia/Tokyo', 'US/Eastern', 'dateutil/US/Pacific']: for t in ['2014-02-01 09:00', '2014-07-08 09:00', '2014-11-01 17:00', '2014-11-05 00:00']: ts = Timestamp(t) localized = ts.tz_localize(tz) self.assertEqual(localized, Timestamp(t, tz=tz)) with tm.assertRaises(Exception): localized.tz_localize(tz) reset = localized.tz_localize(None) self.assertEqual(reset, ts) self.assertTrue(reset.tzinfo is None)
def test_now(self): # #9000 ts_from_string = Timestamp('now') ts_from_method = Timestamp.now() ts_datetime = datetime.datetime.now() ts_from_string_tz = Timestamp('now', tz='US/Eastern') ts_from_method_tz = Timestamp.now(tz='US/Eastern') # Check that the delta between the times is less than 1s (arbitrarily small) delta = Timedelta(seconds=1) self.assertTrue((ts_from_method - ts_from_string) < delta) self.assertTrue((ts_from_method_tz - ts_from_string_tz) < delta) self.assertTrue((ts_from_string_tz.tz_localize(None) - ts_from_string) < delta)
def test_today(self): ts_from_string = Timestamp("today") ts_from_method = Timestamp.today() ts_datetime = datetime.datetime.today() ts_from_string_tz = Timestamp("today", tz="US/Eastern") ts_from_method_tz = Timestamp.today(tz="US/Eastern") # Check that the delta between the times is less than 1s (arbitrarily small) delta = Timedelta(seconds=1) self.assertTrue(abs(ts_from_method - ts_from_string) < delta) self.assertTrue(abs(ts_datetime - ts_from_method) < delta) self.assertTrue(abs(ts_from_method_tz - ts_from_string_tz) < delta) self.assertTrue(abs(ts_from_string_tz.tz_localize(None) - ts_from_method_tz.tz_localize(None)) < delta)
def test_tz_localize_ambiguous(self): ts = Timestamp("2014-11-02 01:00") ts_dst = ts.tz_localize("US/Eastern", ambiguous=True) ts_no_dst = ts.tz_localize("US/Eastern", ambiguous=False) rng = date_range("2014-11-02", periods=3, freq="H", tz="US/Eastern") self.assertEqual(rng[1], ts_dst) self.assertEqual(rng[2], ts_no_dst) self.assertRaises(ValueError, ts.tz_localize, "US/Eastern", ambiguous="infer") # GH 8025 with tm.assertRaisesRegexp(TypeError, "Cannot localize tz-aware Timestamp, use " "tz_convert for conversions"): Timestamp("2011-01-01", tz="US/Eastern").tz_localize("Asia/Tokyo") with tm.assertRaisesRegexp(TypeError, "Cannot convert tz-naive Timestamp, use " "tz_localize to localize"): Timestamp("2011-01-01").tz_convert("Asia/Tokyo")
def test_tz(self): t = "2014-02-01 09:00" ts = Timestamp(t) local = ts.tz_localize("Asia/Tokyo") self.assertEqual(local.hour, 9) self.assertEqual(local, Timestamp(t, tz="Asia/Tokyo")) conv = local.tz_convert("US/Eastern") self.assertEqual(conv, Timestamp("2014-01-31 19:00", tz="US/Eastern")) self.assertEqual(conv.hour, 19) # preserves nanosecond ts = Timestamp(t) + offsets.Nano(5) local = ts.tz_localize("Asia/Tokyo") self.assertEqual(local.hour, 9) self.assertEqual(local.nanosecond, 5) conv = local.tz_convert("US/Eastern") self.assertEqual(conv.nanosecond, 5) self.assertEqual(conv.hour, 19)
def test_tz(self): t = '2014-02-01 09:00' ts = Timestamp(t) local = ts.tz_localize('Asia/Tokyo') self.assertEqual(local.hour, 9) self.assertEqual(local, Timestamp(t, tz='Asia/Tokyo')) conv = local.tz_convert('US/Eastern') self.assertEqual(conv, Timestamp('2014-01-31 19:00', tz='US/Eastern')) self.assertEqual(conv.hour, 19) # preserves nanosecond ts = Timestamp(t) + offsets.Nano(5) local = ts.tz_localize('Asia/Tokyo') self.assertEqual(local.hour, 9) self.assertEqual(local.nanosecond, 5) conv = local.tz_convert('US/Eastern') self.assertEqual(conv.nanosecond, 5) self.assertEqual(conv.hour, 19)
def test_tz_localize_ambiguous(self): ts = Timestamp('2014-11-02 01:00') ts_dst = ts.tz_localize('US/Eastern', ambiguous=True) ts_no_dst = ts.tz_localize('US/Eastern', ambiguous=False) rng = date_range('2014-11-02', periods=3, freq='H', tz='US/Eastern') self.assertEqual(rng[1], ts_dst) self.assertEqual(rng[2], ts_no_dst) self.assertRaises(ValueError, ts.tz_localize, 'US/Eastern', ambiguous='infer') # GH 8025 with tm.assertRaisesRegexp(TypeError, 'Cannot localize tz-aware Timestamp, use ' 'tz_convert for conversions'): Timestamp('2011-01-01' ,tz='US/Eastern').tz_localize('Asia/Tokyo') with tm.assertRaisesRegexp(TypeError, 'Cannot convert tz-naive Timestamp, use ' 'tz_localize to localize'): Timestamp('2011-01-01').tz_convert('Asia/Tokyo')
def test_parsers_timestring(self): tm._skip_if_no_dateutil() from dateutil.parser import parse # must be the same as dateutil result cases = {'10:15': (parse('10:15'), datetime.datetime(1, 1, 1, 10, 15)), '9:05': (parse('9:05'), datetime.datetime(1, 1, 1, 9, 5))} for date_str, (exp_now, exp_def) in compat.iteritems(cases): result1, _, _ = tools.parse_time_string(date_str) result2 = to_datetime(date_str) result3 = to_datetime([date_str]) result4 = Timestamp(date_str) result5 = DatetimeIndex([date_str])[0] # parse time string return time string based on default date # others are not, and can't be changed because it is used in # time series plot self.assertEqual(result1, exp_def) self.assertEqual(result2, exp_now) self.assertEqual(result3, exp_now) self.assertEqual(result4, exp_now) self.assertEqual(result5, exp_now)