Чтение даты WCF REST от Android - PullRequest
7 голосов
/ 12 января 2012

Какой самый простой способ прочитать .NET DateTime, отправленный через службу WCF REST в программе Android?Даты сериализуются в следующем формате: Данные = / Дата (1326273723507 + 0100) /

Существует ли простой способ десериализации этих дат?

Спасибо.

Ответы [ 3 ]

8 голосов
/ 22 января 2012

ну, у меня была точно такая же проблема, я решил ее с помощью этого простого кода

public class Json {

  /**
   * Convertit une date Json en java.util.Date
   * @param jsonDate
   * @return
   */
  public static Date JsonDateToDate(String jsonDate)
  {
    //  "/Date(1321867151710+0100)/"
    int idx1 = jsonDate.indexOf("(");
    int idx2 = jsonDate.indexOf(")") - 5;
    String s = jsonDate.substring(idx1+1, idx2);
    long l = Long.valueOf(s);
    return new Date(l);
  }
}

если вы используете gson, вы также можете использовать это решение: сериализация gson поля Date в MS WCFсовместимая форма

4 голосов
/ 19 января 2012

XML Serializer сериализует экземпляры Datetime, используя свойство Ticks для лучшей точности (Ticks - это количество интервалов в 100 наносекунд, прошедших с 12:00:00 до полуночи 1 января 0001 г.) Это номер, который вы видите здесь, затем +0100, что означает GMT + 1:00

Чтобы перевести отметки в правильную дату Java, см. Ответ Джона Скита (Все дороги ведут к Джону Скиту) здесь:

C # DateTime.Ticks эквивалент в Java

0 голосов
/ 22 января 2012

Я отправляю и получаю даты в / из службы WCF REST. После большого перебора преобразования тиков в миллисекунды с начала эпохи (используя ответ Джона Скита), я решил просто хранить даты как длинные значения Java (из date.getTime ()), чтобы не выполнять преобразование с устройства Android. Если мне нужно увидеть их на стороне .NET, я сделаю преобразование. Так что, если у вас есть контроль над концом WCF и базой данных, сохраните их как длинные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...