6.2.2.2. 时区

默认情况下,所以时间有关的值都可以在服务器时区中显示。通过在应用程序 block 中调用 TimeZone.getDefault() 获取时区。默认时区基于操作系统而来,也可以通过设置 Java 系统属性 user.timezone 显式设置。例如,Unix 环境下,给运行于 Tomcat 中的 web client 和 middleware 设置时区为 GMT 时,添加以下代码到 tomcat/bin/setenv.sh 文件:

CATALINA_OPTS="$CATALINA_OPTS -Duser.timezone=GMT"

用户可以查看/编辑与服务器不同时区的时间戳值,有两种方法管理用户时区:

  • 管理员可以在用户编辑界面修改。

  • 用户自己在 Help > Settings 窗口自行修改。

两种方法中,时区都包含两个域:

  • 时区名称,用户可以在下拉列表选择。

  • Auto 复选框,勾选后时区会从当前环境自动获取(对于 web client 是浏览器)。

如果两个域都为空,则不会对该用户做任何时区转换。否则,用户登录时,系统会在 UserSession 中保存时区设置,并在显示或输入时间值时使用它。应用程序代码也可以在需要的时候使用 UserSession.getTimeZone 获取时区的值。

如果时区值在当前会话被使用到,其简称和 GMT 值会在应用程序主窗口的用户名旁边显示。

时区转换会在使用 DateTimeDatatype 类型时发生,比如,时间值。使用(DateDatatype)日期类型和 (TimeDatatype) 时间类型单独保存日期和时间时不会受到影响。也可以使用 @IgnoreUserTimeZone 注解禁止为时间值属性做时区转换。