diff --git a/src/ng/filter/filters.js b/src/ng/filter/filters.js index a81b5ede4c31..56a468c799b4 100644 --- a/src/ng/filter/filters.js +++ b/src/ng/filter/filters.js @@ -260,8 +260,8 @@ function dateStrGetter(name, shortForm) { }; } -function timeZoneGetter(date) { - var zone = -1 * date.getTimezoneOffset(); +function timeZoneGetter(date, formats, offset) { + var zone = -1 * offset; var paddedZone = (zone >= 0) ? "+" : ""; paddedZone += padNumber(Math[zone > 0 ? 'floor' : 'ceil'](zone / 60), 2) + @@ -482,13 +482,15 @@ function dateFilter($locale) { } } + var dateTimezoneOffset = date.getTimezoneOffset(); if (timezone && timezone === 'UTC') { date = new Date(date.getTime()); date.setMinutes(date.getMinutes() + date.getTimezoneOffset()); + dateTimezoneOffset = 0; } forEach(parts, function(value) { fn = DATE_FORMATS[value]; - text += fn ? fn(date, $locale.DATETIME_FORMATS) + text += fn ? fn(date, $locale.DATETIME_FORMATS, dateTimezoneOffset) : value.replace(/(^'|'$)/g, '').replace(/''/g, "'"); }); diff --git a/test/ng/filter/filtersSpec.js b/test/ng/filter/filtersSpec.js index 2a5c9a603dc2..b62e7cbd038d 100644 --- a/test/ng/filter/filtersSpec.js +++ b/test/ng/filter/filtersSpec.js @@ -456,6 +456,7 @@ describe('filters', function() { it('should use UTC if the timezone is set to "UTC"', function() { expect(date(new Date(2003, 8, 10, 3, 2, 4), 'yyyy-MM-dd HH-mm-ss')).toEqual('2003-09-10 03-02-04'); expect(date(new Date(Date.UTC(2003, 8, 10, 3, 2, 4)), 'yyyy-MM-dd HH-mm-ss', 'UTC')).toEqual('2003-09-10 03-02-04'); + expect(date(new Date(Date.UTC(2003, 8, 10, 3, 2, 4)), 'yyyy-MM-dd HH-mm-ssZ', 'UTC')).toEqual('2003-09-10 03-02-04+0000'); }); }); });