2015-05-11 155 views
2

当以下设置程序在json字符串中收到endDate="2015-05-01T00:00:00+08:00"时,时区偏移量将丢失,值为2015-05-01T00:00:00。当偏移量丢失时,我需要将日期调整为UTC。忽略时区偏移量

的对象是一个自动格式化的WebAPI使用内JSON.NET

反序列化
private DateTime? _endDate; 
public DateTime? endDate 
{ 
    get { 
     //... 
    } 
    set { _endDate = value; } 
} 

有什么问题或怎样才能得到UTC时间呢?

+1

当你做endDate.ToUniversalTime()时你会得到什么? – DWright

+1

如果您想使用偏移量,则为此目的会有[DateTimeOffset](https://msdn.microsoft.com/zh-cn/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的评论 –