2016-06-07 90 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

相關問題