2017-04-17 44 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

希望这有助于。