diff --git a/src/filters.js b/src/filters.js index 206da240adc8..c6248cb7c448 100644 --- a/src/filters.js +++ b/src/filters.js @@ -192,9 +192,10 @@ angularFilter.date = function(date, format) { date = parseInt(date, 10); } - if (isNumber(date)) { + if (date instanceof Date) { + } else if (date && (isNumber(date) || Date.parse(date.toString()))) { date = new Date(date); - } else if (!(date instanceof Date)) { + } else { return date; } diff --git a/test/FiltersSpec.js b/test/FiltersSpec.js index 0de7b5b71301..ea84c3558e4a 100644 --- a/test/FiltersSpec.js +++ b/test/FiltersSpec.js @@ -115,6 +115,10 @@ describe('filter', function(){ expect(filter.date(noon.getTime() + "")).toEqual(noon.toLocaleDateString()); }); + it('should be able to parse ISO 8601 dates/times using', function() { + expect(filter.date(noon.toISOString())).toEqual(noon.toLocaleDateString()); + }); + it('should accept format', function() { expect(filter.date(morning, "yy-MM-dd HH:mm:ss")). toEqual('10-09-03 07:05:08'); diff --git a/test/angular-mocks.js b/test/angular-mocks.js index f13ca763f032..925d8ab79692 100644 --- a/test/angular-mocks.js +++ b/test/angular-mocks.js @@ -243,6 +243,10 @@ function TzDate(offset, timestamp) { return offset * 60; }; + this.toISOString = function() { + return this.date.toISOString(); + }; + //hide all methods not implemented in this mock that the Date prototype exposes var unimplementedMethods = ['getDay', 'getMilliseconds', 'getTime', 'getUTCDate', 'getUTCDay', 'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth',