【问题标题】:angularjs date timezone adjustment issueangularjs日期时区调整问题
【发布时间】:2017-09-12 17:37:51
【问题描述】:

我想做的是在 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 中显示日期而不考虑时区?

【问题讨论】:

  • 通过使用 angularjs 过滤器,它也将转换为时区。我不认为问题出在浏览器上。bcz 我只是在 IE 中转换“2016-08-30T00:00:00”,它只显示 2016 年 8 月 30 日。您需要 javascript 中的解决方案...这可能会有所帮助。 stackoverflow.com/questions/2771609/…
  • 我刚刚检查了你的格式我没有发现任何类似提到的东西......
  • 我尝试了相同的@Nitish 并且它可以工作,但是当我通过 Json 对象渲染时它会返回 1 天。正如我所提到的,我尝试了不同的解决方案,但它不起作用。
  • 您正在尝试使用字符串,如果它来自 json 对象,它会根据本地化时区追溯到一天。 nulogy.com/who-we-are/company-blog/articles/…

标签: javascript angularjs datetime


【解决方案1】:

日期对于 javascript 来说总是很棘手。在您的场景中,您需要显示日期而不涉及时区。您可以使用 getUTCDate() getUTCMonth()getUTCFullYear() 从日期字符串中获取各个元素并构造一个新的日期对象。

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

JSFiddle link

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2018-03-21
    • 2016-12-14
    • 2015-05-24
    • 1970-01-01
    • 2014-10-28
    相关资源
    最近更新 更多