python - Google App Engine 中的工作日期时间对象

标签 python google-app-engine datetime

在此模型中

class Rep(db.Model):
    mAUTHOR = db.UserProperty(auto_current_user=True)
    mUNIQUE = db.StringProperty()
    mCOUNT = db.IntegerProperty()
    mDATE = db.DateTimeProperty(auto_now=True)
    mDATE0 = db.DateTimeProperty(auto_now_add=True)
    mWEIGHT = db.IntegerProperty()

我想做:

mWEIGHT = mCOUNT / mDATE0

在此 for 循环中

    for i in range(len(UNIQUES)):                        
        C_QUERY = Rep.all()
        C_QUERY.filter("mAUTHOR =", user)
        C_QUERY.filter("mUNIQUE =", UNIQUES[i])
        C_RESULT = C_QUERY.fetch(1)                
        if C_RESULT:
            rep=C_RESULT[0]
            rep.mCOUNT+=COUNTS[i]
            # how to convert mDATE0 to integer so that I can divide:
            # rep.mWEIGHT = rep.mCOUNT / rep.mDATE0
            rep.put()
        else:
            C = COUNTS[i]
            S = UNIQUES[i]
            write_to_db(S, C)

我在其他几个论坛上问了同样的问题,我得到了很好且有值(value)的建议,但我仍然无法使这段代码工作,因为我对(对象,实例,datetime.datetime,秒,秒......和)感到困惑等等)例如,我认为

mWEIGHT = mCOUNT / rep.mDATE0.second

会将 mDATE0 转换为秒;但事实并非如此,它只是取了 2010-11-12 18:57:27.338000 的第二部分,即 27。

还有

mWEIGHT = mCOUNT / mDATE0.date

给出类型不匹配的错误消息。

我也尝试过

rep.mWEIGHT = rep.mCOUNT / rep.mDATE0.toordinal()

这给出了一个类似于 734088 的数字,但所有项目都有相同的数字。

另请参阅我的 previous question关于同一主题。

感谢您的帮助。

编辑3

这有效,谢谢!

if C_RESULT:
    rep = C_RESULT[0]
    rep.mCOUNT+=COUNTS[i]
    utc_tuple = rep.mDATE0.utctimetuple()
    # this is actually float not integer
    mDATE0_integer = time.mktime(utc_tuple)
    mDATE0_day = mDATE0_integer / 86400
    rep.mWEIGHT = float(rep.mCOUNT / mDATE0_day)
    rep.put()

编辑2 @Constantin:我意识到数字需要是 float :

>>> mCOUNT = 35
>>> div = mCOUNT / mDATE0
>>> div
0
>>> div = float(mCOUNT) / float(mDATE0)
>>> div
2.7140704010987625e-08
>>> 

不确定如何将其合并到脚本中。有什么建议吗?

编辑

@康斯坦丁:

对于该项目

C_RESULT[0] = "新项目"

这是我得到的结果。

new item: 
rep: <__main__.Rep object at 0x052186D0> 
mDATE0_integer: 1289575981 
rep.mCOUNT: 35 
rep.mWEIGHT: 0             

所以

mDATE0_integer = int(time.mktime(rep.mDATE0.utctimetuple()))

可以工作并给出整数1289575981但是这个除法

rep.mWEIGHT = rep.mCOUNT / mDATE0_integer

结果为 0。有什么建议吗?

最佳答案

这应该可以满足您的要求:

import time
mWEIGHT = mCOUNT / time.mktime(mDATE0.utctimetuple())

参见mktime .

mCOUNT/mDATE0.date 失败,因为 intdate 没有除法运算符。

toordinal不适合您,因为它按日期运行并完全忽略时间。

关于python - Google App Engine 中的工作日期时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4173245/

相关文章:

java - Android Studio无法部署后端: Execution failed for task ':app:transformClassesWithDexForDevDebug

Python正则表达式匹配任何顺序

Python liburl2 超时;可以 ping 服务器正常,wget 工作正常;

python - django.core 序列化器和 Django Rest Framework 序列化器之间的区别

python - Google App Engine Python 中多个文件中的 URL 映射

datetime - 夏令时 "bug"

php - MySQL:获取添加了 x 小时的行

python - 如何让多个 Pod 在 Kubernetes 上相互通信

python - 有什么方法可以处理 Python 代码中的 C 扩展段错误?

java - 在时间间隔内收集用户电子邮件并在发送前将它们合并(GAE)