У меня возникла проблема, пока не знаю, как ее решить. Итак, у меня есть столбец даты в базе данных следующим образом:
Если я проверю следующий запрос:
Код: Выделить всё
select TO_CHAR(m.START_DATE, 'HH24:MI:SS') START_DATE from UserDetails m;
Он возвращает следующее:
Это означает, что временная часть отсутствует. У нас есть существующий проект WPF, который получает данные вместе с датой со следующим: Это служба SOAP, которая передается в проект WPF
Служба SOAP:
Код: Выделить всё
DataSet tempDataSet = new DataSet();
using (OracleDataAdapter adapter = new OracleDataAdapter(cmd))
{
adapter.ReturnProviderSpecificTypes = false;
adapter.Fill(tempDataSet);
}
tempDataSet.Tables[0].Rows[0]["START_DATE"];
В проекте WPF имеются следующие данные без преобразования:
Код: Выделить всё
DataTable table = SRO.FindData(LoginData.Ticket, LoginData.Session, LoginData.ActAsRoleId, Where);
Когда дата попадает в проект WPF и клиентский компьютер имеет часовой пояс UTC-5, дата преобразуется в следующую:
Это означает, что дата, сохраненная в базе данных, преобразуется в системный часовой пояс. Я не уверен, почему это происходит, я пытался преобразовать дату в строку, чтобы обеспечить соблюдение даты (ее невозможно преобразовать, поскольку это тип DateTime), а также принудительно исключить дату из DateTime. Но ничто не мешает ему попасть в системный часовой пояс. Есть ли способ решить эту проблему, поскольку я не могу вносить какие-либо изменения в проект WPF и предпочитаю обрабатывать это из самих
SOAP Services?
< strong>Обновление 1: Вот как DateTime возвращается из процедуры.
[img]
https://i. sstatic.net/GPrNNuIQ.png[/img]
Подробнее здесь:
https://stackoverflow.com/questions/792 ... t-timezone