2016-06-07 76 views
2

我有一个AngularJS应用程序被发布在UTC格式的日期到.NET控制器:.NET为什么将UTC日期更改为服务器时区?

CreateEvent: function (event) { 

     var event_date = moment.utc(new Date(event.event_date)).format(); 

     return $http({ 
      url: '/test/CreateEvent/', 
      method: "POST", 
      data: { event_date: event_date} 
     }); 

    } 

如果我把日期2016年7月4日,08:00 event.event_date,瞬间转换,为“ 2016-07-03T22:00:00Z“发布到服务器。

下面是我的.Net控制器的一个片段:

public JsonResult CreateEvent(@event evt, int eventOffset) 
    { 

     DateTime eventDate = evt.event_date; 

     ... 
    } 

我设置一个断点在第一行和evt.event_date包含日期08:00 2016年7月4日。我的服务器运行在GMT + 10时区。为什么将日期转换为当前时区,我该如何解决这个问题?

+1

'evt.event_date.ToUniversalTime()' – Rob

+0

完美的感谢!但是,为什么当我从数据库中进行检索时,日期并未转换为GMT + 10?我认为JavaScript自动将日期转换为当前时区? – user1024941

+1

取决于您如何存储/加载数据库中的信息 - 这与javascript有关?此外,您正在使用“时刻”库,其行为与内置的JavaScript日期处理有所不同。 – Rob

回答

0

我怀疑一个很好的捷径是将日期时间转换为具有确定格式的字符串。服务器端必须记住确定的格式。

我明白你的问题。无论数据库和存储方式如何,JSON对象的date属性都可以简单地进行转换,甚至不会达到存储在数据库中的地步。它必须与序列化问题有关。

这是一个很好的职位日期: - http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx

相关问题