ISO 8601时区中的AngularJS显示日期

时间:2016-03-03 23:19:17

标签: angularjs

我有一个API,它返回带有时区偏移量的ISO 8601日期:

  • 2016-03-05T06:00:00.000-08:00
  • 2016-03-05T08:00:00.000-05:00

目前,使用Angular日期过滤器时,日期会显示在浏览器的时区中:

{{scheduled | date : 'medium'}

是否可以在他们进入的时区(即第一个PST和最后一个EST)中显示它们以及时区名称?

1 个答案:

答案 0 :(得分:1)

一种选择是从日期解析偏移量(使用正则表达式),然后将其应用于日期。这可以包装到自定义角度过滤器中,该过滤器包裹date过滤器:

angular.module('app').filter('datetz', ['$filter', '$window',
  function ($filter) {
    var _ = $window._;
    return function (date, format) {
      // Attempt to extract the +00:00 portion of the date.
      var matches = date.match(/[+-]\d\d:\d\d/);
      var timezone = _.last(matches);

      return $filter('date')(date, format, timezone);
    };
  }
]);

{{'2016-03-05T06:00:00.000-08:00' | datetz : 'medium'}
{{'2016-03-05T06:00:00.000-05:00' | datetz : 'medium'}