【问题标题】:App Engine DateTimeProperty averagingApp Engine DateTimeProperty 平均
【发布时间】:2025-12-28 04:45:10
【问题描述】:

我正在尝试获取两个DateTimeProperties 并找出它们之间的小时、分钟和秒的差异。我也试图取两个实例之间的差异并将它们与其他实例进行平均。是否有捷径可寻?如果有人可以发布解决方案,那就太好了!

我的模特:

class Submission(DictModel):
    timeIn = db.DateTimeProperty(auto_now_add=False)
    timeOut = db.DateTimeProperty(auto_now_add=False)
    UUID = db.StringProperty()

最后,我试图取所有Submissions 的平均值。

谢谢!

【问题讨论】:

    标签: python google-app-engine datetime average


    【解决方案1】:

    DateTimeProperty 的底层value type 是python datetime.datetime。只需减去它们即可得到difference

        dt = Submission(timeIn=datetime.datetime(year=2014, month=1, day=20, minute=5, hour=9),
                        timeOut=datetime.datetime(year=2014, month=2, day=25, minute=10, hour=10))
        diff = dt.timeOut - dt.timeIn
        self.response.write(diff.seconds)   # get seconds
        self.response.write(diff.days)    # get days
    

    【讨论】:

    • diff.seconds 不是总秒数 - 你想要 diff.total_seconds()
    【解决方案2】:

    数据存储不是关系数据库,不允许您执行聚合等操作。如果您需要计算整个数据集的平均值之类的东西,您需要使用mapreduce framework,它使用离线任务在一种类型的每个实体上运行映射器。

    【讨论】: