XMLGregorianCalendar 2010-12-21T08: 55: 17E-7 + 01: 00 E-7. Что означает Е-7 - PullRequest
2 голосов
/ 23 декабря 2010

Из веб-службы SOAP поле даты возвращается в виде строки:

2010-12-21T08:55:17E-7+01:00

который .NET имеет проблемы с анализом. У Джакса с этим нет проблем. Что означает Е-7. И что я могу сделать, чтобы нормализовать это на сервере Java.

РЕДАКТИРОВАТЬ: у меня есть Java-сервер, который действует как переход от нескольких серверов с ошибочной отметкой времени. Что я могу сделать, чтобы это нормализовалось после того, как он был разобран jax? .normalise () выдаст мне UTC, но я не уверен, что хочу.

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

Извинения за предыдущее неправильное прочтение. Я могу подтвердить, что .NET не может разобрать его, например:

using System;
using System.Runtime.Remoting.Metadata.W3cXsd2001;

class Test
{    
    static void Main()
    {
        string x = "2010-12-21T08:55:17E-7+01:00";
        DateTime dt = SoapDateTime.Parse(x);
        Console.WriteLine(dt);
    }
}

По правде говоря, это плохой сервис SOAP. Глядя на различные фрагменты документации по SOAP, мы видим, что значения даты / времени SOAP должны быть xsd:dateTime значениями, которые отформатированы в ISO 8601 - и я не вижу ничего в Википедии Страница ISO 8601 , которая позволила бы это. Конечно, возможно, что Википедия неточна, но, скорее всего, это ошибка в сервисе SOAP, IMO.

Я предлагаю вам взглянуть на заголовки из сервиса, чтобы увидеть, дает ли это подсказку о базовой платформе ... затем поискать ошибки, обнаруженные для этой платформы, которые приводят к недопустимым значениям даты / времени.

1 голос
/ 23 декабря 2010

Во время ISO 8601 вы всегда имеете дело с Z = Zulu для UTC, но есть и другие военные часовые пояса (не часть стандарта):

http://www.navycs.com/militarytime.html

E для Echo и означает часовой пояс UTC + 5.

У меня нет объяснения частей -7 и +01: 00.

Редактировать: Обновлен пост, чтобы пояснить, что Z - единственное допустимое обозначение для ISO 8601 раз.

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