Когда вы создаете объект Date в ActionScript, он будет внутренне хранить его значение в числовом значении UTC без времени, однако это значение будет рассчитано с использованием коррекции из-за смещения локального часового пояса/дневного сальдо клиента. Flash получает текущий часовой пояс базовой операционной системой, и в настоящее время нет возможности установить пользовательский часовой пояс.
Итак, если вы точно не находитесь в ситуации UTC + 0, фактическое значение даты будет содержать смещение определенного количества часов/минут.
При повторной отображении той же даты форматы по умолчанию и стандартные элементы управления Flex преобразуют дату в местный часовой пояс: когда две операции выполняются на одном компьютере (или на машинах с одинаковым смещением часового пояса) эти исправления будут компенсировать друг друга, и вы вообще этого не заметите.
Однако сохранение этого значения (например, отправка его в BlazeDS/LCDS для его сохранения в БД) и извлечение его из клиента с другим часовым поясом может вызвать неожиданный эффект, если вы не готовы к их обработке: например, если разница между поправками часового пояса двух клиентов отрицательная (например, -1 час), день, введенный как 28/06/2011, может отображаться как 27/06/2011 в компоненте DateField.
Это сложная проблема, и нет быстрого и простого решения: она зависит от типа поддержки часового пояса, которую вы хотите предоставить.
Простейшим решением будет установка всех клиентов на работу с общим часовым поясом, например часовым поясом сервера. К сожалению, текущая версия Flash Player не позволяет указать явный часовой пояс, и для реализации этой стратегии вам необходимо вручную установить внутренние значения UTC любой даты, созданной компонентами Flex, перед отправкой на сервер, чтобы компенсировать местное смещение часового пояса. Другим распространенным обходным решением является использование объектов Date и использование строкового представления ISO для дат.
В Adobe Bug Tracker вы найдете много информации (и некоторые идеи по управлению часовым поясом), см. Вопрос https://bugs.adobe.com/jira/browse/FP-175 с заголовком «Установить конкретный часовой пояс на flashplayer. Это позволит приложениям поддерживать одинаковый часовой пояс для всех клиентов в разных часовых поясах."
Очень хороший ответ, однако, похоже, вам кажется, что особенно сложно установить правильную дату. Часто я позволяю серверу сохранять/отправлять универсальную строку даты (которая включает дату, время и смещение) и позволить 'DateFormatter.parseString' выполнять работу над моим классом команд. –
Да, в зависимости от типа приложения, которое вы строите, использование строки вместо объектов Date для связи с сервером может быть жизнеспособным решением (я упомянул об этом в ответе, не вдаваясь в подробности). Однако, по моему опыту, может возникнуть сложность, когда у вас есть пользовательский сложный объект (структурированные DTOs/VO), а поле даты может быть вложен в эти структуры и при вычислении даты на стороне клиента. Я просто хотел предупредить, что независимо от выбранного решения хорошее понимание проблемы важно, чтобы избежать неприятных сюрпризов. –