diff options
| author | Igor Minar | 2013-01-09 09:47:40 -0800 |
|---|---|---|
| committer | Igor Minar | 2013-01-09 09:50:43 -0800 |
| commit | cc821502bca64d15e1c576bf20a62b28b3d9a88a (patch) | |
| tree | 5d3f5dd161a7d0e3c2dc86847532ccc92a619b4d /src/ng | |
| parent | 037aefae479ba44510a084c86a60a41e4261a078 (diff) | |
| download | angular.js-cc821502bca64d15e1c576bf20a62b28b3d9a88a.tar.bz2 | |
fix(date): parse string input as local time unless TZ is specified
previously we were always parsing the string input as UTC which cased issues like:
{{ '2012-04-01' | date:'d MMM yyyy' }} renders as 31 Mar 2012
BREAKING CHANGE: string input without timezone info is now parsed as local time/date
Closes #847
Diffstat (limited to 'src/ng')
| -rw-r--r-- | src/ng/filter/filters.js | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/ng/filter/filters.js b/src/ng/filter/filters.js index 57186981..cc6d7c60 100644 --- a/src/ng/filter/filters.js +++ b/src/ng/filter/filters.js @@ -330,18 +330,22 @@ function dateFilter($locale) { var R_ISO8601_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/; - function jsonStringToDate(string){ + // 1 2 3 4 5 6 7 8 9 10 11 + function jsonStringToDate(string) { var match; if (match = string.match(R_ISO8601_STR)) { var date = new Date(0), tzHour = 0, - tzMin = 0; + tzMin = 0, + dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear, + timeSetter = match[8] ? date.setUTCHours : date.setHours; + if (match[9]) { tzHour = int(match[9] + match[10]); tzMin = int(match[9] + match[11]); } - date.setUTCFullYear(int(match[1]), int(match[2]) - 1, int(match[3])); - date.setUTCHours(int(match[4]||0) - tzHour, int(match[5]||0) - tzMin, int(match[6]||0), int(match[7]||0)); + 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)); return date; } return string; |
