2010-09-16 2 views
2

Каков наилучший способ передачи дат и времени. Я использую GWT на стороне клиента/браузера и .NET C Sharp на сервере, и я использую JSON в качестве формата обмена данными. В настоящее время я сохраняю все даты и время на сервере как .NET DateTime. Теперь я заметил, что если я использую GWT DatePicker или DateBox, чтобы выбрать дату и отправить ее на сервер в качестве miliseconds (делая date.getTime()), где сервер принимает этот параметр как DateTime, я вижу смещение часа из-за BST. У меня есть ситуации, когда мне нужно иметь дату и время в отдельных блоках в пользовательском интерфейсе, а установка времени вместе с правильной датой имеет решающее значение из-за планирования.Перекрестный язык/перекрестная платформа Передача даты и времени

ответ

3

Лучшим способом обмена значениями даты и времени было бы сериализовать их в не зависящие от культуры строки, основанные на UTC, такие как: 2010-09-18T18: 37: 11. Проблема заключается в том, что операции с датой и временем, как правило, выполняются неправильно ...

Что касается вашей проблемы, я предполагаю, что она всплывает во время десериализации времени JSON, то есть .Net рассматривает это время как локальное (DateTimeKind.Local или DateTimeKind.Unspecified), тем самым преобразуя его. Не знаю, как справиться с этим, перебором будет, вероятно, посылая сериализованную строку, как и выше, и десериализацию вручную, как это:

DateTime date = DateTime.Parse(dateString, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal); 
+0

Строки - отличные способы передачи данных. Иногда это раздражает, но они работают практически во всем. – BCS

1

Я бы рекомендовал использовать стандарт, такие как ISO 8601 передавать дату данные времени в виде строки , В моей компании информация о времени, закодированная в объекте JSON, почти всегда находится в этом формате, например. "2015-10-12T18: 41: 11 + 01: 00". Эта строка может быть проанализирована и понята правильно во всех клиентах с разными языками программирования (Obj-C, Java, C/C++).