Создание DateTime из введенной пользователем даты
Я довольно новичок в Python и App Engine, но я пытаюсь сохранить модель, которая содержит DateProperty, и этот DateProperty заполнен датой, введенной пользователем в веб-форме.
У меня есть модель:
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() могла обрабатывать остальное форматирование. Теперь я вижу вещи со встроенными лямбда (??) функциями, а что нет.
Чего мне не хватает в чем-то, что казалось бы таким простым.
3 ответа
Возможно, вы используете неправильный класс? Я не уверен, какой тип должна взять ваша модель
но попробуйте:
from datetime import datetime
myValue = datetime.strptime(self.request.get('date'), '%Y-%m-%d')
Я использую объект datetime в MySQL с MySQLdb (и поле datetime)
... также вы можете попробовать
from datetime import datetime
myValue = datetime.strptime(self.request.get('date'), '%Y-%m-%d').date()
(обратите внимание на [obj].date() в конце)
Вы были правы с 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)
Да, PHP гораздо приятнее. Я использую эту библиотеку
http://labix.org/python-dateutil
>>> import dateutil.parser
>>> dateutil.parser.parse("may 2 1984")
datetime.datetime(1984, 5, 2, 0, 0)