web-dev-qa-db-ja.com

Django string to date format

文字列の日付をDjango日付形式に変換したい。メソッドを試してみたが、うまくいかなかった。

date = datetime.datetime.strptime(request.POST.get('date'),"Y-mm-dd").date()

このエラーが発生しました。

time data '2014-04-07' does not match format 'Y-mm-dd'

私のコードの何が問題なのか。

22
SAFEER N

そのはず %Y-%m-%d

>>> s = "2014-04-07"
>>> datetime.datetime.strptime(s, "%Y-%m-%d").date()
datetime.date(2014, 4, 7)

ドキュメント によると:

  • %Yは、世紀を10進数とする年を表します
  • %m-ゼロが埋め込まれた10進数としての月
  • %d-ゼロが埋め込まれた10進数としての月の日

お役に立てば幸いです。

38
alecxe

この場合、Djangoの dateparse を使用すると便利です。

from Django.utils.dateparse import parse_date
date_str = request.POST.get('date')
date = parse_date(date_str)
20
Daniel Backman

Django.utils.dateparse.parse_date関数は、日付が%Y-%m-%d形式でない場合、Noneを返します

DATE_INPUT_FORMATSで文字列を解析するためのソースコードにDjango=ソースコードに関数が見つかりませんでした。

from datetime import datetime
from Django.utils.formats import get_format

def parse_date(date_str):
    """Parse date from string by DATE_INPUT_FORMATS of current language"""
    for item in get_format('DATE_INPUT_FORMATS'):
        try:
            return datetime.strptime(date_str, item).date()
        except (ValueError, TypeError):
            continue

    return None
7
Mesut Tasci