正如错误所暗示的那样,您“无法比较原始偏移量和可感知偏移量的日期时间”。这意味着您应该比较两个日期时间,它们都是时区感知或时区天真(不是时区感知)。在您的代码中, curdate 没有时区信息,因此无法与时区感知的 user_chosen_time 进行比较。
首先,您应该为每个日期时间分配正确的时区。然后您可以直接比较具有不同时区的两个日期时间。
示例(使用 pytz):
import pytz
import datetime as dt
# create timezone
nytz=pytz.timezone('America/New_York')
jptz=pytz.timezone('Asia/Tokyo')
# randomly initiate two timestamps
a=dt.datetime(2018,12,13,11,2)
b=dt.datetime(2018,12,13,22,45)
# assign timezone to timestamps
a=nytz.localize(a)
b=jptz.localize(b)
# a = datetime.datetime(2018, 12, 13, 11, 2, tzinfo=<DstTzInfo 'America/New_York' EST-1 day, 19:00:00 STD>)
# b = datetime.datetime(2018, 12, 13, 22, 45, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)
a>b # True
b>a # False
对于其他方法,您可以参考Convert a python UTC datetime to a local datetime using only python standard library?.