【问题标题】:Python on gae datetime to UTC format将 gae 日期时间转换为 UTC 格式的 Python
【发布时间】:2013-02-19 06:02:40
【问题描述】:

我的模型上有一个日期时间

2013-02-19 05:29:27.874648

我使用 jquery timeago.. 但问题是它没有给出期望的输出..

<time class="timeago" datetime="{{ activity.created }}">{{ activity.date }}</time>

上面的代码是我的示例html代码..

这是我的javascript:

<script>
    jQuery(document).ready(function() {
      jQuery("time.timeago").timeago();
    });
</script>

我的问题是.. 我应该将其转换为 UTC 格式吗??.. 如果是这样!我如何转换它?..用python方式或javascript转换它??..我该怎么做?。

【问题讨论】:

  • 你想要的输出是什么?
  • 应该在一分钟前或一小时前.. 这取决于我的时区

标签: javascript jquery python google-app-engine timeago


【解决方案1】:

如果我理解你的问题,那么。

如何转换为 UTC

from datetime import datetime
from pytz import timezone

date_str = "2009-05-05 22:28:15"
datetime_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
datetime_obj_utc = datetime_obj.replace(tzinfo=timezone('UTC'))
print datetime_obj_utc.strftime("%Y-%m-%d %H:%M:%S %Z%z")

你需要安装pytz

如果您想在当前时间添加一些时间戳。

做这样的事情

future = datetime.datetime.now() + datetime.timedelta(minutes=5)
return time.mktime(future.timetuple()).

请看这篇文章time.mktime

【讨论】:

  • 有没有不安装pytz的其他方法?..啊..我可以在javascript中进行转换吗??..
【解决方案2】:

您通常希望服务器上的日期已经采用 UTC(或显式偏离 UTC),然后在最后一秒(双关语)转换为客户端的本地时区。

使用 jquery-timeago,假设日期已经(相对于)UTC,您可以将其格式化(在 Python 中,服务器端)并且 jquery-timeago 应该正确地计算出其余部分。

这是我在自己的 HTML 模板中用来格式化 UTC 日期的方法:

{{ activity.date.isoformat() + 'Z' }}

【讨论】:

  • 上面的代码给了我一个arror 'str object' has no attribute 'isoformat'
  • @Leonard:这意味着activity.date 是一个字符串(str 对象)而不是datetime.datetime 对象。这意味着日期在进入视图之前已经格式化!您需要找出发生这种情况的位置并在那里正确格式化(或者更好的是,将其保留为 datetime 对象,以便视图可以选择如何呈现它!)。
猜你喜欢
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 2014-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多