【发布时间】:2015-05-18 08:41:27
【问题描述】:
我正在尝试将来自谷歌分析和 django 应用程序的数据组合在一起。
数据库中django的日期时间是UTC。谷歌分析数据的时区为 IST。
我正在根据 IST 从谷歌分析获取一段时间的数据,并在 IST 的同一时期从 django 获取数据。有很多变化。
- 有什么办法可以解决这个问题吗?
【问题讨论】:
标签: django datetime google-analytics
我正在尝试将来自谷歌分析和 django 应用程序的数据组合在一起。
数据库中django的日期时间是UTC。谷歌分析数据的时区为 IST。
我正在根据 IST 从谷歌分析获取一段时间的数据,并在 IST 的同一时期从 django 获取数据。有很多变化。
【问题讨论】:
标签: django datetime google-analytics
IST(印度标准时间)比 UTC 早 5:30 (http://www.timeanddate.com/time/zones/ist)。从 Django 获取数据时,请确保使用本地化的日期时间对象:
import pytz
from datetime import datetime
tz_india = pytz.timezone('Asia/Kolkata')
start = tz_india.localize(datetime(#Here create you datetime object from IST))
end = tz_india.localize(datetime(#Here create you datetime object from IST))
【讨论】:
您最好的选择可能是将默认时区从您的 Django 应用程序更改为 IST。
首先你应该检查Django settings: TIME_ZONE
如果您了解它的工作原理,您将更好地了解如何修复它。
要将默认时区更改为 IST,您需要在 settings.py 中添加:
TIME_ZONE = 'Asia/Kolkata'
如果Asia/Kolkata 不符合您的需求,您可以在下一个 URL 中查看所有可用时区:
如果您更喜欢管理日期时间对象并将 UTC 转换为 IST 或相反,您可以这样做:
from datetime import datetime
from pytz import timezone
format = "%Y-%m-%d %H:%M:%S %Z%z"
# Current time in UTC
now_utc = datetime.now(timezone('UTC'))
print now_utc.strftime(format)
Output: 2015-05-18 10:02:47 UTC+0000
# Convert to Asia/Kolkata time zone
now_asia = now_utc.astimezone(timezone('Asia/Kolkata'))
print now_asia.strftime(format)
Output: 2015-05-18 15:32:47 IST+0530
from datetime import datetime
from pytz import timezone
format = "%Y-%m-%d %H:%M:%S %Z%z"
# Current time in Asia/Kolkata
now_asia = datetime.now(timezone('Asia/Kolkata'))
print now_asia.strftime(format)
Output: 2015-05-18 15:32:47 IST+0530
# Convert to UTC time zone
now_utc = now_utc.astimezone(timezone('UTC'))
print now_utc.strftime(format)
Output: 2015-05-18 10:02:47 UTC+0000
【讨论】: