1. 基本概念

  • 物理时间:在经典牛顿力学的范畴下,时间是一个绝对的标尺和概念,一个人无论在地球的何处,大家本质上在都是一个绝对的物理时间轴之上的,不存在有的人的时间线和其他人不一样这样的可能性。常见的物理时间标准有 Unix 时间戳,其含义是从 1970 年 1 月 1 日(UTC/GMT 的午夜)开始所经过的秒数,不考虑闰秒。
  • 显示时间:由于地球是一个球体,为了方便各地区的生活方便,划分了时区这个概念。大部分地球人使用的显示时间尽管是同一个标准(公元纪年和 24 小时),但是处在不同时区的人,在同一个物理时间看到的显示时间是不一样的。

神策分析存储的是 物理时间,但在界面展示时间的时候,还是会把物理时间转换成显示时间。

本功能为高级功能,默认不开启,若使用,请联系神策工作人员。

2. 多时区使用场景

类别描述举例
按照客户端时间显示
  • 以用户当时客户端的时区作为依据,将物理时间转化成显示时间。
  • 不同的用户上报的时区有可能是不一致的。

用户 A 在美国纽约时间的 1 月 1 日中午 12 点做了事件 A,用户 B 在北京时间的 1 月 1 日中午 12 点做了事件 A。尽管这两个事件发生的实质上的物理时间是不一致的,但是分析模型在展示的时候会把两个事件是作为同时发生。

按照服务端时间显示
  • 以服务端人工配置一个固定的时区为依据,将物理时间转化成显示时间。
  • 不论客户上报的时区是什么样的,都以服务端配置的固定的时区为准。

用户 A 在美国纽约时间的 1 月 1 日中午 12 点做了事件 A,用户 B 在北京时间的 1 月 1 日中午 12 点做了事件 A。这两个事件发生的实质上的物理时间是不一致的,假定服务端配置的固定时区为北京时间,分析模型在展示的时候会展示用户 B 的事件先发生,用户 A 的事件后发生,并且在展示的时候会把用户 A 的事件的发生时间转化成北京时间来显示。

3. 数据采集 SDK依赖

3.1. 客户端 SDK

请确保客户端数据采集 SDK 已升级到支持切换市区的版本:

3.2. 服务端埋点

服务端埋点事件需要增加 $timezone_offset 属性,采集的是时区偏移量,单位是分钟,数值类型,例如北京时区的 $timezone_offset 是 -480。

4. 功能介绍

4.1. 添加支持切换的时区

  1. 选择 项目设置 > 基本设置 > 多时区设置
  2. 开启 多时区
  3. 选择 支持切换的时区,支持多选。
  4. 设置 默认时区
  5. 点击 保存 按钮。

4.2. 切换时区

4.2.1. 在界面选择切换时区

在分析模型页面,可以切换已支持的时区。

以下分析模型支持切换时区:

  • 事件分析
  • 漏斗分析
  • 留存分析
  • 分布分析
  • LTV 分析
  • Session 分析
  • 用户路径
  • 间隔分析
  • 归因分析
  1. 选择 分析 进到事件模型页面。
  2. 选择 时区 下拉框切换时区。

4.2.2. 什么场景下该使用哪个时区?

类别描述举例典型场景
按照客户端时间显示

以用户当时客户端的时区作为依据,将物理时间转化成显示时间

不同的用户上报的时区有可能是不一致的

用户 A 在美国纽约时间的 1 月 1 日中午 12 点做了事件 A

用户 B 在北京时间的 1 月 1 日中午 12 点做了事件 A

尽管这两个事件发生的实质上的物理时间是不一致的

但是分析模型在展示的时候会把两个事件是作为同时发生

一个应用的用户分在在全球各地,需要查看用户在一天当中的活跃时段,并且是根据客户所在的时区来查看。
按照服务端时间显示

以服务端人工配置一个固定的时区为依据,将物理时间转化成显示时间

不论客户上报的时区是什么样的,都以服务端配置的固定的时区为准

用户 A 在美国纽约时间的 1 月 1 日中午 12 点做了事件 A

用户 B 在北京时间的 1 月 1 日中午 12 点做了事件 A

这两个事件发生的实质上的物理时间是不一致的

假定服务端配置的固定时区为北京时间

分析模型在展示的时候会展示用户 B 的事件先发生,用户 A 的事件后发生,并且在展示的时候会把用户 A 的事件的发生时间转化成北京时间来显示。

一个股票交易系统,尽管用户可能遍布全球,但是因为开市的时间是根据交易所所在的时区决定的,所以需要按照交易所所在的时区来查看分析。

5. 切换时区分析的局限性

5.1. 运算速度较慢

无论是使用客户端时区进行查看、还是根据服务端时区进行查看,只要不是使用的默认时区,分析运算速度都会变慢。

5.2. 可能会导致计算不准确的情况

在使用 客户端时区  的时候,查询条件中涉及到 日期类型 用户属性 时,计算结果会不准确。因为这些带有日期信息的用户属性只保存了属性上报时的物理时间,而没有存储这个属性上报时用户所在的时区,所以在参与运算的时候,这些用户属性的日期会转换成服务器所在时区的显示时间然后参与运算。