2010-12-08 5 views
0

У меня есть ValueObject в исходном коде Java с атрибутом java.util.Date или java.sql.Date, а в Flex-AS3 есть DTO, отображаемый с помощью [RemoteClass], используя Дата Тип AS3. Когда я установил дату в Flex с 2010-09-05 форматом YYYY-MM-DD в компоненте DateField и отправил его на Java, java показывает 2010-09-04, существует разница в день от flex до javaПроблема отправки Дата от Flex-AS3 до Java EJB Service

Я использую Java EJB Service + GraniteDS + RemoteObject для общения.

Спасибо!

+1

Возможно, существует разница между GMT, на который настроен ваш сервер приложений, и GMT системы, на которую вы тестируете приложение Flex. У меня есть эта проблема с Liferay, где Tomcat по умолчанию настроен на использование GMT ​​+ 0, когда я тестировал свое приложение в Windows с GMT + 1. Поэтому, пока я отправлял ex. 2010-09-05 от Flex он пришел в Tomcat 2010-09-04 23:00 – 2DH 2010-12-08 13:53:32

ответ

1

Я нашел, что лучший способ обмена датами между flex и бэкэндом - использовать строковые литералы. В противном случае вам придется позаботиться о разностях часовых поясов между клиентом и сервером - поэтому вы видите разные даты. Если вы будете искать stackoverflow, вы найдете больше тем, обсуждающих это.

+0

Возможно, это самый простой способ, но я вряд ли нахожу его «лучшим». Рассмотрите следующую ситуацию: вы готовите SMS-кампанию: «Если вы покупаете рождественскую елку в наших магазинах до 12:00, вы получите 2 бесплатных стеклянных шарика». Таким образом, вы устанавливаете дату начала 2010-12-24 09:00 и дату окончания до 2010-12-24 12:00. Предположим, вы делаете это 2010-12-24 в 08:00 в Чикаго, и эта база данных находится в Варшаве (это разница в 7 часов). Я надеюсь, что вы можете увидеть проблему здесь. В 8 часов утра по Чикаго, в 15:00 в Варшаве, кампания, определенная так, никогда не начнется. С датой, прошедшей как дата, эта проблема не существует. – 2DH 2010-12-08 22:30:02