【问题标题】:["'02-05-2020' value has an invalid format. It must be in YYYY-MM-DD format."]["“02-05-2020”值的格式无效。它必须是 YYYY-MM-DD 格式。"]
【发布时间】:2020-05-02 06:00:10
【问题描述】:

当我尝试在数据库中输入 02-05-2020 日期时出现上述错误。我希望输入的日期格式为 DD-MM-YYYY 而不是 YYYY-MM-DD。我正在使用 DateField。

date = models.DateField()

【问题讨论】:

  • 按应有的方式放入数据库中,然后在显示时更改格式。
  • 我还想根据我使用 date__range(startDate, endDate) 的起始日期和日期(来自用户输入)从数据库中获取它。
  • 这能回答你的问题吗? django date format 'dd-mm-yyyy'
  • @ArakkalAbu 不,我已经尝试过那个解决方案。

标签: python django date


【解决方案1】:

您的问题不详细,但请尝试以下操作:

import datetime

userinput = input("Enter Date DD-MM-YYYY") 
birthday = datetime.datetime.strptime(userinput, '%d-%m-%Y').date()
print(birthday)

输出:

2020-05-02

您需要为用户指定输入格式,然后使用strptime() 函数将其转换为日期格式。见上面的input format,见上面的OUTPUT

编辑

这是在 Django 中的操作方法:

模型.py

from django.db import models
import datetime

# Create your models here.
class Calculator(models.Model):
    deadline = models.DateField(null=True)

    def __str__(self):
         return self.deadline

forms.py

from .models import Calculator



class CalculatorForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        ''' remove any labels here if desired
        '''
    super(CalculatorForm, self).__init__(*args, **kwargs)


    # you can also remove labels of built-in model properties
    self.fields['deadline'].label = ''

    class Meta:
        model = Calculator
        fields = ['deadline']
        widgets = {
            'deadline': forms.DateInput(attrs={'class': 'datepicker', 'placeholder': 'mm-dd-YYYY'})
        }

views.py

from django.shortcuts import render,redirect
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect, HttpResponse
from django.urls import reverse
from .forms import CalculatorForm
from .models import Calculator
import time
import datetime

# Create your views here.

def home(request):
    today = datetime.date.today()
    form = CalculatorForm(request.POST)
    # If this is a POST request then process the Form data

    if form.is_valid():
       instance = form.save()
       currentdate = datetime.date.today()
       userinput = str(instance.deadline) 
       birthday = datetime.datetime.strptime(userinput, '%d-%m-%Y').date()

       days = birthday - currentdate
       daysLeft = 'Days to your event is ' , days

       #return render(request, 'calculator/check.html', {'days':days})
       return HttpResponse(daysLeft)
    context = {
       'form': form,
    }

我使用了一个简单的日期计算器来展示如何在 Django 中执行此操作。希望能解决你的问题

【讨论】:

  • 通过使用 date=models.DateField 我只能以 YYYY-MM-DD 格式在数据库中输入数据,但我希望它被输入DD-MM-YYYY 格式。
  • 不,我也使用了 models.DateFIield。你用的是 Django 还是 Flask?
  • 我正在使用 Django。
猜你喜欢
  • 1970-01-01
  • 2023-02-23
  • 2019-02-02
  • 2015-02-26
  • 2019-01-05
  • 2017-07-15
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多