2017-04-17 72 views
1

我想要做的是以angularjs格式打印日期。angularjs日期時區調整問題

Aug 30, 2016 
{{CC.StartDate | date }} //angularjs UI code 

我只是發送與響應的模式,它會自動反序列化對象轉換爲JSON。

List<CClass> Items = CClass.GetMultipleAsObject(); //fetch data 
return Request.CreateResponse(Items); //sending it to UI 

我可以看到,我在網絡選項卡接收響應"2016-08-30T00:00:00"。但是當它在不同的瀏覽器中呈現時,它會以不同的方式呈現它。

我在IST時區,Chrome將其渲染爲「2016年8月30日」。但IE和FF將其視爲「2016年8月29日」。在PST時區,所有的瀏覽器都能正確顯示它。日期看起來像UTC。

我試着將它轉換成一個普通的字符串,仍然是同樣的問題。 試過這個 - $filter('date')(input, "yyyy-MM-dd");,還是同樣的問題

我沒有試過momentjs,認爲它一定是可能的,沒有這個也是。

有人可以指導,我怎樣才能擺脫這個時區本地化,只顯示日期字符串ire-各自的時區?

+0

通過使用angularjs過濾器也會隨時區轉換。 我不認爲問題是與瀏覽器.. bcz我只是轉換「2016-08-30T00:00:00」在IE它只顯示2016年8月30日。 你需要JavaScript解決方案...這可能會有所幫助。 http://stackoverflow.com/questions/2771609/how-to-ignore-users-time-zone-and-force-date-use-specific-time-zone – Nitish

+0

我剛剛檢查你的格式,我沒有找到任何東西像上面提到的那樣.... –

+0

我嘗試了相同的@Nitish並且它可以工作,但是當我通過Json對象渲染時,它會返回1天。正如我所提到的,我嘗試了不同的解決方案,但它不工作 – sunder

回答

0

日期總是棘手的JavaScript。在你的情況下,你需要顯示日期而不涉及時區。您可以使用getUTCDate()getUTCMonth()getUTCFullYear()從您的日期字符串中獲取各個元素並構造一個新的日期對象。

以下示例在ie和chrome中返回相同的日期。

JSFiddle link

希望這有助於。