【问题标题】:Calculate time difference in python在python中计算时间差
【发布时间】:2017-08-24 16:51:38
【问题描述】:

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 小时(变量 var1)进行比较,并根据输出,需要采取某些措施。这 2 小时我已转换为:

mcalc = datetime.timedelta(seconds=var1*60*60)

所以我想做的是,

diff_tm = (mcurr_time - mcreations_time)

if diff_tm > mcalc:
    do_some1()
else:
    do_some2()

不知道是否需要在任何日期进行任何转换,最好是当前时间,因为我的所有表格都如上所述定义。 这两个日期的时差对于任何客户(即世界上任何地方)都应该是正确的

【问题讨论】:

  • 日期时间的减​​法产生一个 datetime.timedelta 对象。 interval = mcurr_time - mcreation_time。这不是你想要的吗?

标签: python postgresql datetime sqlalchemy


【解决方案1】:

通过删除时区偏移并在计算中使用来解决它:

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))

【讨论】:

    猜你喜欢
    • 2020-06-30
    • 2019-11-11
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多