Создание DateTime из введенной пользователем даты - PullRequest
0 голосов
/ 21 июля 2009

Я довольно новичок в 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 ]

0 голосов
/ 21 июля 2009

Да, PHP гораздо приятнее. Я использую эту библиотеку

http://labix.org/python-dateutil

>>> import dateutil.parser
>>> dateutil.parser.parse("may 2 1984")
datetime.datetime(1984, 5, 2, 0, 0)
0 голосов
/ 21 июля 2009

возможно, вы используете неправильный класс? Я не уверен, какой тип должна взять ваша модель

но попробуйте:

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 () в конце)

0 голосов
/ 21 июля 2009

Вы были правы с 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...