【问题标题】:Django timezone isn't working as expectedDjango 时区未按预期工作
【发布时间】:2020-12-02 14:14:58
【问题描述】:

我正在尝试创建一个入口应用程序。其中一个页面从用户那里输入我的时区的当前日期和时间(我设置了 TIME_ZONE = 'Asia/Kolkata')并将其保存在数据库中。本页查看功能:

def new_entry(request):
    date = timezone.now()
    date = date.replace(second=0, microsecond=0)
    just_date = date.strftime('%d %B %Y')
    just_time = date.strftime('%H:%M')
    if request.method == 'POST':
        content = request.POST.get('content')
        ent = Entry(user=request.user, date=date, content=content)
        ent.save()
        return redirect('user')
    return render(request, 'mainapp/new_entry.html', {'date':just_date,'time':just_time})

然后在另一个页面中,我从数据库中获取并显示所有这些日期..该页面的查看功能:

def user(request):
    if request.method == 'POST':
    user_entries = Entry.objects.filter(user=request.user)
    return render(request, 'mainapp/user.html', {'user_entries':user_entries})

在此页面的模板中,我访问了日期属性。问题是当我在第一页的模板中查看日期时,它以 UTC 显示,而第二页上的日期以我想要的方式显示(即亚洲/加尔各答时区)。为什么我已经明确设置了时区,但还是会出现这种时区差异?

【问题讨论】:

    标签: python django datetime django-views timezone


    【解决方案1】:

    设置时区后,还需要设置

    USE_TZ = True
    

    见:https://docs.djangoproject.com/en/3.1/topics/i18n/timezones/

    【讨论】:

    • @GiacomoCatenazzi 是的先生,我确实设置了 USE_TZ = True 并使用了文档中给出的 timezone.now()
    • @Pranil:链接页面(链接 django doc)。它有关于如何获得正确时间的大量文档。您的问题并没有告诉我们您的大部分配置、模板等。但是 django 文档几乎涵盖了所有情况。花点时间,这样你就会成为 Django 的时区专家。这是一笔很小的投资,但你会遇到其他时区的麻烦,所以这样的投资很快就会得到回报。
    猜你喜欢
    • 2013-02-10
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    相关资源
    最近更新 更多