【问题标题】:Convert UTC time from Datetimefield (models.py) to local time将 UTC 时间从 Datetimefield (models.py) 转换为本地时间
【发布时间】:2012-02-29 15:23:06
【问题描述】:

models.py 中的事件类

class Event(models.Model):
 timestamp = models.DateTimeField()
 message = models.TextField()

  def __unicode__(self):
    return "'%s' at %s" % (self.message, self.timestamp)

   def api_detail(self):
    return {
        'timestamp': str(self.timestamp),
        'description': self.message,

数据库中保存有UTC时间。但我想在本地化时间获取它。例如时间戳将返回: Feb. 14, 2012 , 7 p.m.。这次是UTC,我想把它改成当地时间。

请在这件事上帮助我:)

【问题讨论】:

标签: python django django-models pytz


【解决方案1】:

当地时间在哪个时区? pytz documentation 建议一旦您决定使用哪个区域,就很简单:

local_time = zone.localize(timestamp)

请注意,从 UTC 转换为本地时间 是明确的,反之则不然。

【讨论】:

  • 它可以来自世界任何地方。没有这样的集合来定义它。它不可能首先检查本地时区并自动更改它:)
  • @shardaPAL:我以为我添加了一条评论,但它似乎丢失了。我真的不明白你之前的评论 - 你的意思是你想使用运行代码的系统的本地时区是什么?我找不到通过 pytz 获得它的方法,但它可能在某处可用......
  • 是的,这取决于客户端时区。它是一个网络应用程序,我想为每个客户端显示本地时间。为此,我成功地将 UTC 时间保存在数据库中。但现在我想获取它(根据客户端时区)
  • @shardaPAL:如果它是一个网络应用程序,那么棘手的一点是找出客户端时区。没有办法完全自动和准确地做到这一点。您可以找到当前时区偏移量,并让用户从具有该当前偏移量的所有时区中进行选择 - 但重要的是,只是将系统时区用于系统的问题代码正在运行。
猜你喜欢
  • 2019-03-04
  • 2018-07-27
  • 2014-07-18
  • 2021-02-04
  • 2010-09-15
  • 2011-05-01
  • 2019-04-30
  • 2017-03-20
相关资源
最近更新 更多