我对Python和App Engine很陌生,但我要做的是存储一个包含DateProperty的模型,并且DateProperty填充了用户在Web表单中输入的日期。
我有以下型号:
class Memory(db.Model):
author = db.UserProperty()
content = db.StringProperty(multiline=True)
date = db.DateProperty()
然后使用:
创建一个实例memory = Memory()
memory.author = users.get_current_user()
memory.content = self.request.get('content')
但是一旦我尝试对日期值做任何事情,我就打破它。我假设 - 并输入 - 以这种格式的日期值:2009-07-21
我试过了:
memory.date = time.strptime(self.request.get('date'), '%Y-%m-%d')
memory.date = db.DateProperty(self.request.get('date'))
memory.date = self.request.get('date') (wishful thinking I guess)
以及其他一些我现在甚至都记不住的选择。我尝试的所有内容都会导致一个ImportError,其中一个巨大的堆栈跟踪结束于:
:不 名为_multiprocessing的模块 args =('没有名为_multiprocessing'的模块,) message ='没有名为_multiprocessing'的模块
我不知道该怎么做。
我来自一个PHP世界,其中strtotime()是我的神奇功能,它为我提供了转换所需的一切,而date()函数可以处理剩余的格式。现在我看到内联lambda(??)函数的东西,什么不是。
我对那些似乎很简单的事情感到遗憾。
答案 0 :(得分:0)
你是正确的strptime:
>>> dt = time.strptime('2009-07-21', '%Y-%m-%d')
>>> dt
time.struct_time(tm_year=2009, tm_mon=7, tm_mday=21, tm_hour=0, tm_min=0, tm_sec
=0, tm_wday=1, tm_yday=202, tm_isdst=-1)
>>>
你有结构可以被其他功能使用。例如,M / D / Y惯例中的显示日期:
>>> time.strftime('%m/%d/%Y', dt)
'07/21/2009'
另一个例子(导入日期时间模块):
>>> dt = datetime.datetime.strptime('2009-07-21', '%Y-%m-%d')
>>> td = datetime.timedelta(days=20)
>>> dt+td
datetime.datetime(2009, 8, 10, 0, 0)
答案 1 :(得分:0)
是的,PHP更好。我正在使用这个库
http://labix.org/python-dateutil
>>> import dateutil.parser
>>> dateutil.parser.parse("may 2 1984")
datetime.datetime(1984, 5, 2, 0, 0)
答案 2 :(得分:0)
也许你正在使用错误的课程?我不确定你的模型应该采用什么类型
但请尝试:
from datetime import datetime
myValue = datetime.strptime(self.request.get('date'), '%Y-%m-%d')
我在MySQL中使用带有MySQLdb的日期时间对象(以及日期时间字段)
...同样你可以尝试
from datetime import datetime
myValue = datetime.strptime(self.request.get('date'), '%Y-%m-%d').date()
(注意最后的[obj] .date())