【发布时间】:2016-07-15 14:06:33
【问题描述】:
我正在开发一个用于记录潜水的 Django 应用程序,每次潜水都有一个日期时间和一个时区。我正在使用 django-timezone-field 应用程序作为时区。
class Dive(models.Model):
...
date_time_in = models.DateTimeField(default=timezone.now)
timezone = TimeZoneField(default=timezone.get_current_timezone_name())
所以用户可以输入一个日期时间字符串(“2016-07-11 14:00”)并选择一个时区(“亚洲/曼谷”-UTC+0700),然后我将日期时间的时区设置为在我看来是这样的:
def log_dive(request):
if request.method == 'POST':
form = DiveForm(request.POST)
if form.is_valid():
dive = form.save(commit=False)
date = dive.date_time_in
date = date.replace(tzinfo=None)
dive.date_time_in = dive.timezone.localize(date)
dive.save()
然后数据库将日期时间作为 UTC 存储在数据库中(SELECT 语句在我的本地时区中给出):
# SELECT date_time_in, timezone FROM divelog_dive ORDER BY number DESC;
date_time_in | timezone
------------------------+------------------
2014-07-11 17:00:00+10 | Asia/Bangkok
现在有两件事我正在努力解决:
1) 我想显示给定时区的日期,但我似乎无法阻止它默认为 TIME_ZONE 设置。
2) 如果用户编辑记录,编辑字段中显示的时间应该是他们最初输入的时间(14:00),而不是显示在当前时区(17:00)。
【问题讨论】:
标签: python django datetime timezone-offset