diff --git a/panel/util.py b/panel/util.py index 0212dafeae..380af2a8d2 100644 --- a/panel/util.py +++ b/panel/util.py @@ -249,6 +249,13 @@ def value_as_date(value): return value +def datetime_as_utctimestamp(value): + """ + Converts a datetime to a UTC timestamp used by Bokeh interally. + """ + return value.replace(tzinfo=dt.timezone.utc).timestamp() * 1000 + + def is_number(s): try: float(s) diff --git a/panel/widgets/slider.py b/panel/widgets/slider.py index eea790c145..7f911a7211 100644 --- a/panel/widgets/slider.py +++ b/panel/widgets/slider.py @@ -17,7 +17,8 @@ from ..config import config from ..io import state from ..util import ( - edit_readonly, param_reprs, value_as_datetime, value_as_date + datetime_as_utctimestamp, edit_readonly, param_reprs, + value_as_datetime, value_as_date ) from ..viewable import Layoutable from ..layout import Column, Row @@ -191,7 +192,7 @@ def _process_param_change(self, msg): if 'value' in msg: value = msg['value'] if isinstance(value, dt.datetime): - value = value.replace(tzinfo=dt.timezone.utc).timestamp() * 1000 + value = datetime_as_utctimestamp(value) msg['value'] = value return msg @@ -480,9 +481,9 @@ def _process_param_change(self, msg): elif 'value' in msg: v1, v2 = msg['value'] if isinstance(v1, dt.datetime): - v1 = v1.replace(tzinfo=dt.timezone.utc).timestamp() * 1000 + v1 = datetime_as_utctimestamp(v1) if isinstance(v2, dt.datetime): - v2 = v2.replace(tzinfo=dt.timezone.utc).timestamp() * 1000 + v2 = datetime_as_utctimestamp(v2) msg['value'] = (v1, v2) if msg.get('value_throttled') == (None, None): del msg['value_throttled']