diff --git a/arrow/arrow.py b/arrow/arrow.py index e855eee0..d3335db7 100644 --- a/arrow/arrow.py +++ b/arrow/arrow.py @@ -1090,6 +1090,33 @@ def to(self, tz: TZ_EXPR) -> "Arrow": fold=getattr(dt, "fold", 0), ) + def time_diff(self, tz: TZ_EXPR) -> int: + """Returns a integer represent the time difference between two timezone. Early is positive, otherwise, negative + + :param tz: A :ref:int. + + Usage:: + + >>> utc.timeDef('US/Pacific') + 8 + + """ + + if not isinstance(tz, dt_tzinfo): + tz = parser.TzinfoParser.parse(tz) + + dt = self._datetime.astimezone(tz) + + if dt.date == self._datetime.date: + return self._datetime.hour - dt.hour + elif dt.date > self._datetime.date: + return self._datetime.hour - dt.hour + 24 + else: + return self._datetime.hour - dt.hour - 24 + + + return self.datetime.hour - dt.hour + # string output and formatting def format(