我有一个使用datetime.utcnow()创建并保存在数据库中的python datetime实例.
为了显示,我想使用默认的本地时区将从数据库检索的日期时间实例转换为本地日期时间(即,就像使用datetime.now()创建日期时间一样).
如何仅使用python标准库将UTC日期时间转换为本地日期时间(例如,没有pytz依赖项)?
似乎一个解决方案是使用datetime.astimezone(tz),但是如何获得默认的本地时区?
在settings.py我有:
TIME_ZONE = 'Asia/Singapore'
USE_I18N = True
USE_L10N = True
USE_TZ = True
Run Code Online (Sandbox Code Playgroud)
如果用户(居住在新加坡)2013-10-07 01:00 A.M.在我的网站上输入表格,则存储在我的(PostgreSQL)数据库中的值为2013-10-07 01:00:00+08.当我在python manage.py shell会话期间提取这些信息时,我明白了2013-10-06 17:00:00+00:00.当我尝试在模板中呈现此信息时也会发生同样的情况.
我认为发生了什么:Django认识到用户正在新加坡时间10月10日凌晨1点进入,并将其存储在数据库中2013-10-07 01:00:00+08.但是,当Django从数据库中检索此信息时,它会将其格式化为UTC时间,从而给出2013-10-06 17:00:00+00:00.
我有这个权利吗?如果是这样,我可以做些什么来使用存储在数据库中的相同时区信息(或至少使用我的TIME_ZONE设置)来显示Django时间?换句话说,我怎样才能让用户以与输入日期时完全相同的形式看到日期时间?
我在使用django应用程序时DateTimeField遇到问题。这主要是因为DST时间更改。
我在2015年10月30日(上个夏令时)创建了一个活动。我创建了第一项活动的副本,该副本将于2015年11月6日(美国夏令时当天)
我申请timedelta了7天,所以将天数改为7+。但是我几个小时都没有使用timedelta。
由于节省日光,减少了一小时。我不需要这个。我只想有几个小时。我怎样才能做到这一点。?
我尝试过此方法,但没有帮助我。
请看这个截图

我的 models.py
from django.db import models
from datetime import timedelta
class Event(models.Model):
name = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)
start_date = models.DateTimeField()
def __unicode__(self):
return self.name
def copy_event(self, add_days=timedelta(days=7)):
start_date = self.start_date + add_days
name = self.name +' (copy)'
new_event = Event(name = name,created = self.created,start_date=start_date,)
new_event.save()
return new_event
Run Code Online (Sandbox Code Playgroud)