postgresql中定义的日期时间表字段:
Column("created_on",DateTime(timezone=True),default=datetime.datetime.utcnow)
,
在python代码中,我将当前时间转换为识别时间为:
mcurr_time = datetime.datetime.now().replace(tzinfo=pytz.UTC)
我得到的时间是:
2017-03-30 21:44:51.394387 + 00:00
当我使用sqlalchemy从表中检索时间时,我得到:
mcreation_time = 2017-03-30 15:05:01.350078 + 05:30
如何找到2之间的差异或必须使用什么转换 比较差异与小时数?所有表都有时区 知道日期时间。我需要确切的代码,因为我检查了所有的例子并且很困惑。
2个日期的差异在没有任何转换的情况下有效。结果必须与示例2小时(变量var1)进行比较,并根据输出,需要采取某些操作。这2小时我转换为:
mcalc = datetime.timedelta(seconds=var1*60*60)
所以我想做的是,
diff_tm = (mcurr_time - mcreations_time)
if diff_tm > mcalc:
do_some1()
else:
do_some2()
我不知道在任何日期是否需要任何转换,最好是当前时间,因为我的所有表格都是如上所述定义的。 两个日期的时差应该来自任何客户,即来自世界上任何地方的
答案 0 :(得分:0)
通过删除时区偏移并在计算中使用来解决它:
mcurr_time = datetime.datetime.utcnow().replace(tzinfo=pytz.UTC)
mcurr_time = mcurr_time.replace(
tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None))
mcreation_time = mcreation_time.replace(
tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None))