如何转换MixPanel中的时间属性?

3 投票
3 回答
1865 浏览
提问于 2025-04-17 21:26

我正在使用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)

撰写回答