Текущая дата / время в Java под Citrix Xenapp 6.5
Мы поддерживаем устаревшее Java-приложение, которое только что перешло на платформу XenApp 6.5.
Но когда мы отображаем текущее время, оно отображает время сервера, а не время пользователя на Powered Shared Desktop.
Например, пользователь находится в смещении часового пояса 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 ответа
Я обнаружил, что это ошибка в самой JRE, и она была обнаружена в 2011 году, недавно она была исправлена в раннем выпуске Java 9:
Необходимо убедиться, что перенаправление часового пояса включено, чтобы сеанс сервера использовал часовой пояс клиентского устройства. В XenApp 6.5 вы должны включить это в двух местах, как в определенных политиках Citrix XenApp, так и в политиках Windows RDS.
В следующей статье показано, как сделать это в производственной среде, настроив объекты групповой политики для настройки обоих параметров политики:
http://support.citrix.com/article/CTX126099
Однако, если вы хотите просто быстро проверить это на одном сервере, вы можете просто отредактировать все локально. Т.е. сначала откройте Citrix AppCenter, затем:
- Выберите узел Политики
- Выберите вкладку "Пользователь"
- Выберите политику по умолчанию "Нефильтрованный"
- Нажмите Редактировать
- В диалоговом окне "Изменить политику" выберите вкладку "Настройки".
- Прокрутите вниз до категории "Контроль часового пояса" и выберите ее.
- Найдите параметр "Использовать локальное время клиента" и нажмите "Добавить".
- Нажмите OK в появившемся диалоговом окне добавления.
- Нажмите кнопку ОК в диалоговом окне "Изменить политику", чтобы закрыть его.
Аналогично шагу 12 в статье поддержки, которую я связал, запустите gpedit.msc:
- Выберите узел: Конфигурация компьютера \ Административные шаблоны \ Компоненты Windows \ Службы удаленных рабочих столов \ Узел сеансов удаленных рабочих столов \ Перенаправление устройств и ресурсов
- Отредактируйте политику "Разрешить перенаправление часовых поясов", чтобы установить ее "Включено".
После настройки перенаправления часового пояса вы сможете использовать стандартные API даты / времени на любом языке разработки, который вы выберете.