这个问题很简单,但我一生都找不到任何相关信息。根据我的互联网搜索,这似乎应该不是问题; Django 应该自动执行此操作。
我的问题是,自从 DST 开始以来,Django 一直在将时间转换为比应有时间提前 1 小时显示在网页上的时间。我说转换为是因为我在设置中启用了“USE_TZ”,因此时间以 UTC 格式保存到数据库中,但时间被错误地转换为 EST,因为它们晚了一小时。
这可能是什么原因造成的?
这是一个例子:
这是模型。
class Chat(models.Model):
chat_id = models.AutoField(primary_key=True)
chat_user = models.ForeignKey(UserExt, null=True, on_delete=models.SET_NULL)
chat_time = models.DateTimeField(auto_now_add=True)
chat_type = models.CharField(default="chat", blank=False, null=False, max_length=20)
chat_message = models.TextField()
这是将模型保存到数据库的示例
new_chat = ClubChat()
new_chat.chat_user = self.user
new_chat.chat_message = message
new_chat.chat_destination = self.club
new_chat.save()
这是显示日期/时间的网页示例
<tr {% if chat.chat_type == 'info' %} class="joinleavemessage"{% endif %}>
<td>
{% if chat.chat_user %}<p>{{ chat.chat_user }}</p>{% endif %}
<p>{{ chat.chat_time|date:'m/d/Y h:i A' }}</p>
</td>
<td>
<p>{{ chat.chat_message }}</p>
</td>
</tr>
此问题是整个网站范围内的问题,因此这不是唯一的示例。
最佳答案
设置您的TIME_ZONE='America/New_York'
(或任何适当的区域设置)。
“EST”(UTC−05:00)和“EDT”(UTC−04:00)是不同的特定时间偏移,并且不会随着夏令时而改变,您需要使用基于位置的时区,这将需要考虑夏令时季节变化。
关于python - Django 不考虑夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71700269/