В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Я думаю лучший способ сделать, это должно всегда передавать объект как UTC и преобразовывать в местное время на клиентах. Путем выполнения так, существует точка общей ссылки для всех клиентов.
Для преобразования в UTC назовите ToUniversalTime на объекте DateTime. Затем на клиентах назовите ToLocalTime для получения его в их зоне текущего времени.
Одна большая проблема - то, что сериализация WCF не поддерживает xs:Date. Это - большая проблема, как будто все, что Вы хотите, является датой, Вы не должны быть вынуждены быть обеспокоенными часовыми поясами. Следующая проблема подключения обсуждает некоторые проблемы: http://connect.microsoft.com/wcf/feedback/ViewFeedback.aspx?FeedbackID=349215
, Если Вы хотите представить момент времени однозначно, т.е. не только часть даты, можно использовать класс DateTimeOffset, если у Вас есть.NET 3.5 на обоих клиентах и серверах. Или для совместимости, всегда передавайте дату/временные стоимости как UTC.
UTC/GMT был бы последователен в распределенной среде.
Одна важная вещь, это определяет datetimeKind после заполнения Вашего свойства DateTime со значением от базы данных.
dateTimeValueUtcKind = DateTime.SpecifyKind(dateTimeValue, DateTimeKind.Utc);
Пока Ваш слой веб-сервисов и клиентский слой используют.NET тип DateTime, это должно сериализировать и десериализовать правильно как стандартная SOAP локальная дата/время w/информация о Часовом поясе, такая как:
2008-09-15T13:14:36.9502109-05:00
, Если Вы абсолютно, положительно должен знать сам часовой пояс (т.е. вышеупомянутое могло бы быть Восточное стандартное время или Центральное летнее время), необходимо создать собственный тип данных, который представляет те части как таковые:
[Serializable]
public sealed class MyDateTime
{
public MyDateTime()
{
this.Now = DateTime.Now;
this.IsDaylightSavingTime = this.Now.IsDaylightSavingTime();
this.TimeZone = this.IsDaylightSavingTime
? System.TimeZone.CurrentTimeZone.DaylightName
: System.TimeZone.CurrentTimeZone.StandardName;
}
public DateTime Now
{
get;
set;
}
public string TimeZone
{
get;
set;
}
public bool IsDaylightSavingTime
{
get;
set;
}
}
тогда Ваш ответ был бы похож:
<Now>2008-09-15T13:34:08.0039447-05:00</Now>
<TimeZone>Central Daylight Time</TimeZone>
<IsDaylightSavingTime>true</IsDaylightSavingTime>
Мне везло только с хранением Типа данных datetime и всегда хранением его как GMT В каждом слое, я скорректирую значение GMT к локальному значению для слоя.