mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-17 07:40:22 +00:00
fix(date): correctly format dates with more than 3 sub-second digits
This date {{2003-09-10T13:02:03.123456Z | date: yyyy-mm-dd ss} is now
treated as having 123.45ms. Previously it had 123456ms so 123 seconds
were added to the formatted date.
Use local date in unit tests so they work in any time zone
This commit is contained in:
parent
4622af3f07
commit
4f2e360685
2 changed files with 24 additions and 16 deletions
|
|
@ -356,7 +356,11 @@ function dateFilter($locale) {
|
|||
tzMin = int(match[9] + match[11]);
|
||||
}
|
||||
dateSetter.call(date, int(match[1]), int(match[2]) - 1, int(match[3]));
|
||||
timeSetter.call(date, int(match[4]||0) - tzHour, int(match[5]||0) - tzMin, int(match[6]||0), int(match[7]||0));
|
||||
var h = int(match[4]||0) - tzHour;
|
||||
var m = int(match[5]||0) - tzMin
|
||||
var s = int(match[6]||0);
|
||||
var ms = Math.round(parseFloat('0.' + (match[7]||0)) * 1000);
|
||||
timeSetter.call(date, h, m, s, ms);
|
||||
return date;
|
||||
}
|
||||
return string;
|
||||
|
|
|
|||
|
|
@ -300,21 +300,23 @@ describe('filters', function() {
|
|||
it('should support various iso8061 date strings with timezone as input', function() {
|
||||
var format = 'yyyy-MM-dd ss';
|
||||
|
||||
var localDay = new Date(Date.UTC(2003, 9, 10, 13, 2, 3, 0)).getDate();
|
||||
|
||||
//full ISO8061
|
||||
expect(date('2003-09-10T13:02:03.000Z', format)).toEqual('2003-09-10 03');
|
||||
expect(date('2003-09-10T13:02:03.000Z', format)).toEqual('2003-09-' + localDay + ' 03');
|
||||
|
||||
expect(date('2003-09-10T13:02:03.000+00:00', format)).toEqual('2003-09-10 03');
|
||||
expect(date('2003-09-10T13:02:03.000+00:00', format)).toEqual('2003-09-' + localDay + ' 03');
|
||||
|
||||
expect(date('20030910T033203-0930', format)).toEqual('2003-09-10 03');
|
||||
expect(date('20030910T033203-0930', format)).toEqual('2003-09-' + localDay + ' 03');
|
||||
|
||||
//no millis
|
||||
expect(date('2003-09-10T13:02:03Z', format)).toEqual('2003-09-10 03');
|
||||
expect(date('2003-09-10T13:02:03Z', format)).toEqual('2003-09-' + localDay + ' 03');
|
||||
|
||||
//no seconds
|
||||
expect(date('2003-09-10T13:02Z', format)).toEqual('2003-09-10 00');
|
||||
expect(date('2003-09-10T13:02Z', format)).toEqual('2003-09-' + localDay + ' 00');
|
||||
|
||||
//no minutes
|
||||
expect(date('2003-09-10T13Z', format)).toEqual('2003-09-10 00');
|
||||
expect(date('2003-09-10T13Z', format)).toEqual('2003-09-' + localDay + ' 00');
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -331,16 +333,18 @@ describe('filters', function() {
|
|||
});
|
||||
|
||||
it('should support different degrees of subsecond precision', function () {
|
||||
var format = 'yyyy-MM-dd';
|
||||
var format = 'yyyy-MM-dd ss';
|
||||
|
||||
expect(date('2003-09-10T13:02:03.12345678Z', format)).toEqual('2003-09-10');
|
||||
expect(date('2003-09-10T13:02:03.1234567Z', format)).toEqual('2003-09-10');
|
||||
expect(date('2003-09-10T13:02:03.123456Z', format)).toEqual('2003-09-10');
|
||||
expect(date('2003-09-10T13:02:03.12345Z', format)).toEqual('2003-09-10');
|
||||
expect(date('2003-09-10T13:02:03.1234Z', format)).toEqual('2003-09-10');
|
||||
expect(date('2003-09-10T13:02:03.123Z', format)).toEqual('2003-09-10');
|
||||
expect(date('2003-09-10T13:02:03.12Z', format)).toEqual('2003-09-10');
|
||||
expect(date('2003-09-10T13:02:03.1Z', format)).toEqual('2003-09-10');
|
||||
var localDay = new Date(Date.UTC(2003, 9-1, 10, 13, 2, 3, 123)).getDate();
|
||||
|
||||
expect(date('2003-09-10T13:02:03.12345678Z', format)).toEqual('2003-09-' + localDay + ' 03');
|
||||
expect(date('2003-09-10T13:02:03.1234567Z', format)).toEqual('2003-09-' + localDay + ' 03');
|
||||
expect(date('2003-09-10T13:02:03.123456Z', format)).toEqual('2003-09-' + localDay + ' 03');
|
||||
expect(date('2003-09-10T13:02:03.12345Z', format)).toEqual('2003-09-' + localDay + ' 03');
|
||||
expect(date('2003-09-10T13:02:03.1234Z', format)).toEqual('2003-09-' + localDay + ' 03');
|
||||
expect(date('2003-09-10T13:02:03.123Z', format)).toEqual('2003-09-' + localDay + ' 03');
|
||||
expect(date('2003-09-10T13:02:03.12Z', format)).toEqual('2003-09-' + localDay + ' 03');
|
||||
expect(date('2003-09-10T13:02:03.1Z', format)).toEqual('2003-09-' + localDay + ' 03');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue