日期时间Citrix Xenapp 6.5下Java中的当前日期/时间
我们维护一个遗留Java应用程序,该应用程序最近刚刚迁移到XenApp 6.5平台
但当我们显示当前时间时,它显示的是服务器时间,而不是用户在共享桌面上的时间
例如,用户处于时区偏移9.5,但在输出时区时显示为10
我们已尝试:
TimeZone.getDefault().getID());
System.getProperty("user.timezone"));
我们通过以下方式获得时间:
private final static DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
private Calendar intCal;
intCal = Calendar.getInstance();
intCal.setTimeInMillis(System.currentTimeMillis());
String df = dateFormat.format(intCal.getTime());
有没有一种官方的方式来获取用户的时间
也可使用VBS输出相同的数据:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objWMIService.ExecQuery("Select * from Win32_TimeZone")
For Each objTimeZone in colTimeZone
Wscript.Echo "Offset: "& objTimeZone.Bias / 60
Next
# 1 楼答案
我发现这是JRE本身的一个bug,它是在2011年提出的,最近在Java 9的早期版本中得到了修复:
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7044727
# 2 楼答案
您需要确保启用了时区重定向,以便服务器会话使用客户端设备的时区。在XenApp 6.5中,您必须在两个地方启用此功能,即特定于Citrix的XenApp策略和Windows RDS策略
下面的文章介绍了如何在生产环境中通过设置GPO来配置这两种策略设置:
http://support.citrix.com/article/CTX126099
但是,如果您想在单个服务器上快速测试,您可以在本地编辑所有内容。即首先打开Citrix AppCenter,然后:
类似于我链接的支持文章中的步骤12,请运行gpedit。理学硕士:
设置时区重定向后,您应该能够在您选择的任何开发语言中使用标准日期/时间API