如何转换MixPanel中的时间属性?
我正在使用MixPanel,想要转换我在查看事件时得到的['property']['time']字段。我原以为这个时间是UTC时间,所以我尝试把这个值转换回我的本地时区。
from dateutil import tz
from_zone = tz.tzutc()
to_zone = tz.tzlocal()
def convert_from_mix_time(mix_time):
utc_date = datetime.fromtimestamp(int(mix_time))
utc_date = utc_date.replace(tzinfo=from_zone)
local_date = utc_date.astimezone(to_zone)
return local_date
比如说,MixPanel给我的时间是1394199886(这应该是东部时间下午4:44),对应的UTC时间是2014-03-07 08:44:46+00:00,而我转换后的时间是2014-03-07 03:44:46(显然不是正确的时间)。有人知道怎么做这个转换吗?
3 个回答
0
数据的时区是根据每个项目来定义的。你可以点击Mixpanel网页界面右下角的齿轮图标,这样会弹出一个窗口。在数据管理的部分,有一个时区字段。把它设置为UTC,这样Mixpanel就会按照这个时区来记录你发送的数据。需要注意的是,这个设置不会影响之前的数据。之后你就可以像之前那样转换时区了。
0
你需要对日期时间对象进行标准化:
def convert_mix_time(mix_time):
utc_date = datetime.utcfromtimestamp(int(mix_time))
utc_date = utc_date.replace(tzinfo=from_zone)
local_date = utc_date.astimezone(to_zone)
return from_zone.normalize(local_date)
0
我不明白为什么那个时间戳是东部时间下午4:44,但如果你想让你的代码简单一点,我可以推荐使用 utcfromtimestamp()
。
dt = datetime.datetime.utcfromtimestamp(ts)