有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

日期时间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

共 (2) 个答案

  1. # 2 楼答案

    您需要确保启用了时区重定向,以便服务器会话使用客户端设备的时区。在XenApp 6.5中,您必须在两个地方启用此功能,即特定于Citrix的XenApp策略和Windows RDS策略

    下面的文章介绍了如何在生产环境中通过设置GPO来配置这两种策略设置:

    http://support.citrix.com/article/CTX126099

    但是,如果您想在单个服务器上快速测试,您可以在本地编辑所有内容。即首先打开Citrix AppCenter,然后:

    1. 选择策略节点
    2. 选择用户选项卡
    3. 选择默认的“未筛选”策略
    4. 单击编辑
    5. 在“编辑策略”对话框中,选择“设置”选项卡
    6. 向下滚动至“时区控制”类别并选择它
    7. 查找“使用客户端的本地时间”设置,然后单击“添加”
    8. 在弹出的“添加”对话框中单击“确定”
    9. 单击“编辑策略”对话框上的“确定”将其关闭

    类似于我链接的支持文章中的步骤12,请运行gpedit。理学硕士:

    1. 选择节点:计算机配置\管理模板\ Windows组件\远程桌面服务\远程桌面会话主机\设备和资源重定向
    2. 编辑“允许时区重定向”策略,将其设置为启用

    设置时区重定向后,您应该能够在您选择的任何开发语言中使用标准日期/时间API