2015-05-11 3 views
2

Когда следующий сеттер получает endDate="2015-05-01T00:00:00+08:00" в строке json, смещение часового пояса теряется, а значение равно 2015-05-01T00:00:00. Мне нужна дата, чтобы настроить UTC, когда смещение потеряно.Сброс часовой пояс игнорируется

Объект десериализируется автоматически в WebAPI Formatter с помощью Json.NET

private DateTime? _endDate; 
public DateTime? endDate 
{ 
    get { 
     //... 
    } 
    set { _endDate = value; } 
} 

Что случилось или как я могу получить время UTC вместо этого?

+1

Что вы получаете, когда делаете endDate.ToUniversalTime()? – DWright

+1

Если вы хотите работать с смещениями, для этой цели существует [DateTimeOffset] (https://msdn.microsoft.com/en-us/library/system.datetimeoffset%28v=vs.110%29.aspx). По какой причине вы должны использовать 'DateTime'? –

+0

@DWright Вы правы. Смещение доступно, я просто не видел его в инспекторе отладки. –

ответ

2

Я считаю, что ваша цель будет следующим:

private DateTime? date; 
public DateTime? Date 
{ 
    get 
    { 
      if(date != null) 
       return TimeZoneInfo.ConvertToUtc(date); 

      return date;   
    } 
} 

Это создаст собственности, которая будет принимать формат даты, а затем преобразует его в допустимом формате UTC. Однако, если вам требуется больше минутного контроля, вы захотите пересмотреть подход. Вы можете найти дополнительную информацию here.

Надеюсь, это то, о чем вы на самом деле спрашиваете, если нет, я удалю ответ.

+0

В любом случае это хорошо, ваше решение или комментарий DWright –

Смежные вопросы