AngularJs Date过滤器和1970-01-01返回1969-12-31?

时间:2014-03-27 21:16:37

标签: angularjs timezone filtering

我不太确定如何在日期过滤器的angularjs中设置时区,将1970-01-01转换为1969-12-31。我见过this post,它解释了Java中的相同问题,但不确定如何在AngularJs中处理它 - 任何线索?

3 个答案:

答案 0 :(得分:1)

  

JavaScript日期基于UTC时间1970年1月1日午夜以来的毫秒数。一天持有86,400,000毫秒。相对于UTC时间1970年1月1日,JavaScript日期对象范围为-100,000,000天到100,000,000天。

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

JavaScript Date类型没有时区支持*您需要使用ISO 8601格式或以UTC格式发送timestamp

您还可以使用timezone-jsmoment.js

等库

答案 1 :(得分:1)

角度developer guide说明了时区:

  

Angular日期时间过滤器使用浏览器的时区设置。相同的应用程序将显示不同的时间信息,具体取决于运行该应用程序的计算机的时区设置。 JavaScript和Angular目前都不支持使用开发人员指定的时区显示日期。

您可以使用自己的过滤器来使用特定的时区。这是一个简单的使用moment.js解析19700101和GMT时区:

app.filter('GMT', function() {
  return function(input) {
    return moment(input + ' +0000', "YYYYMMDD").format('MMM DD, YYYY');
  };
});

以下是演示:http://plnkr.co/l5zd9Z1tli2NLmgPTWhJ

答案 2 :(得分:0)

感谢大家的参与。 经过相当多的时间试图找到解决问题的简单方法后,我找到了解决方案 - 只需使用Date及其中一种方法:

new Date(date).toISOString();

这是完成工作并且非常短暂:)