2016-11-29 14 views
0

Когда мы создаем индекс поиска и определяем поле как DateTime, это тип Edm.DateTimeOffset. И значение должно быть таким: yyyy-MM-ddTHH:mm:ss.fffZ или yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm.Как преобразовать DateTimeOffset обратно в DateTime

Теперь у меня есть файл в моей базе данных типа DateTime, которые получают преобразованный в Offset, как это:

DateTime offset = //get from database the date 

TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById("FLE Standard Time"); 
DateTimeOffset offsetConverted = new DateTimeOffset(offset, zone.GetUtcOffset(offset)); 

Мой вопрос: как я могу конвертировать offsetConverted в мой первоначально DateTime offset?

+1

Что вы имеете в виду под "DateTime смещение" точно? Экземпляр 'DateTime' выполняет _not_ сохранение части смещения UTC. У него просто есть дата и время («Добрый»). Во всяком случае, пытались ли вы использовать свойства '.DateTime',' .LocalDateTime' или '.UtcDateTime' вашего' offsetConverted'? –

+0

Я имею в виду: у меня есть DateTime в базе данных: '2014-09-10 12: 00: 00.000', и мне нужно преобразовать это DateTime в DateTimeOffset, что приводит к:' 9/10/2014 09:00:00 AM' поэтому мне нужно преобразовать DateTime обратно в исходное значение. – user2818430

+0

@ SonerGönül: Я использую .DateTime, но не работает. Теперь я попробовал .LocalDateTime и швы работать :) – user2818430

ответ

2

Используйте свойство DateTime класса DateTimeOffset для преобразования DateTimeOffset в DateTime.

using System; 

namespace StackOverflowProblem1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // input comes from user in form yyyyddMMTHHmmss 
      DateTime offset = new DateTime(2016, 10, 12, 12, 22, 0); 
      TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById("FLE Standard Time"); 
      DateTimeOffset offsetConverted = new DateTimeOffset(offset, zone.GetUtcOffset(offset)); 
      DateTime roundTripOffset = offsetConverted.DateTime; 
      Console.WriteLine("Input {0}, as DateTimeOffset {1},", 
        offset.ToString(), 
        offsetConverted.ToString()); 
      Console.WriteLine("after round trip {0}, Kind {1}.", 
       roundTripOffset, 
       roundTripOffset.Kind); 
     } 
    } 
} 

Консольный вывод:

 
Input 10/12/2016 12:22:00, as DateTimeOffset 10/12/2016 12:22:00 +03:00, 
after round trip 10/12/2016 12:22:00, Kind Unspecified. 
+0

Вы используете DateTime, а не DateTimeOffset, как ваш вход? – rolls