2014-04-07 23 views
9

Tôi muốn chuyển đổi ngày chuỗi thành định dạng ngày tháng django. Tôi đã thử một phương pháp. nhưng không hoạt động.Chuỗi Django theo định dạng ngày

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

Tôi gặp lỗi này.

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

có gì sai trong mã của tôi.

Trả lời

16

Nó phải là %Y-%m-%d:

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

Theo documentation:

  • %Y đứng trong vòng một năm với thế kỷ dạng số thập phân
  • %m - tháng như một số thập phân zero-đệm số
  • %d - ngày trong tháng là tháng 12 số imal

Hy vọng điều đó sẽ hữu ích.

13

Có thể thuận tiện khi sử dụng sốcủa django trong trường hợp này.

from django.utils.dateparse import parse_date 
date_str = request.POST.get('date') 
date = parse_date(date_str) 
+5

'parse_date' không hoạt động như được bảo vệ và trả về' None' nếu ngày không ở định dạng '% Y-% m-% d'. –

3

django.utils.dateparse.parse_date chức năng sẽ trở lại None nếu có ngày không %Y-%m-%d định dạng

tôi đã không tìm thấy một hàm trong mã nguồn django để phân tích chuỗi bởi DATE_INPUT_FORMATS. Vì vậy, tôi đã viết một chức năng trợ giúp tùy chỉnh cho điều đó và Tôi đã thêm vào đây để được trợ giúp người khác.

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 
Các vấn đề liên quan