aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIgor Minar2010-11-08 09:05:48 -0800
committerIgor Minar2010-11-08 22:49:30 -0800
commite5c135ac50bfb463895c71a9b83267e9ca836c7b (patch)
tree1130899dc2c48f2e3f1087d106597fcc00ebff5d /src
parent1a43f36e2395c77005fd14fafd43808548b111f2 (diff)
downloadangular.js-e5c135ac50bfb463895c71a9b83267e9ca836c7b.tar.bz2
Support ISO 8601 extended datetime format troughout angular.
Support ISO 8601 extended format datetime strings (YYYY-MM-DDTHH:mm:ss.SSSZ) as defined in EcmaScript 5 throughout angular. This means that the following apis switched from YYYY-MM-DDTHH:mm:ssZ to YYYY-MM-DDTHH:mm:ss.SSSZ (note the added millis) when representing dates: - angular.Date.toString - angular.String.toDate - JSON serialization and deserialization (used by json filter, $xhr and $resource)
Diffstat (limited to 'src')
-rw-r--r--src/apis.js18
-rw-r--r--src/filters.js2
-rw-r--r--src/parser.js2
3 files changed, 11 insertions, 11 deletions
diff --git a/src/apis.js b/src/apis.js
index c232e4a9..effb70d7 100644
--- a/src/apis.js
+++ b/src/apis.js
@@ -211,10 +211,10 @@ var angularString = {
'toDate':function(string){
var match;
if (typeof string == 'string' &&
- (match = string.match(/^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)Z$/))){
+ (match = string.match(/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)\.(\d{3})Z$/))){
var date = new Date(0);
date.setUTCFullYear(match[1], match[2] - 1, match[3]);
- date.setUTCHours(match[4], match[5], match[6], 0);
+ date.setUTCHours(match[4], match[5], match[6], match[7]);
return date;
}
return string;
@@ -223,14 +223,14 @@ var angularString = {
var angularDate = {
'toString':function(date){
- function pad(n) { return n < 10 ? "0" + n : n; }
return !date ? date :
- date.getUTCFullYear() + '-' +
- pad(date.getUTCMonth() + 1) + '-' +
- pad(date.getUTCDate()) + 'T' +
- pad(date.getUTCHours()) + ':' +
- pad(date.getUTCMinutes()) + ':' +
- pad(date.getUTCSeconds()) + 'Z' ;
+ padNumber(date.getUTCFullYear(), 4) + '-' +
+ padNumber(date.getUTCMonth() + 1, 2) + '-' +
+ padNumber(date.getUTCDate(), 2) + 'T' +
+ padNumber(date.getUTCHours(), 2) + ':' +
+ padNumber(date.getUTCMinutes(), 2) + ':' +
+ padNumber(date.getUTCSeconds(), 2) + '.' +
+ padNumber(date.getUTCMilliseconds(), 3) + 'Z';
}
};
diff --git a/src/filters.js b/src/filters.js
index ee0ef076..a166abad 100644
--- a/src/filters.js
+++ b/src/filters.js
@@ -169,7 +169,7 @@ var NUMBER_STRING = /^\d+$/;
* * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200‒1200)
*
* @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or
- * number) or ISO 8601 string (yyyy-MM-ddTHH:mm:ssZ).
+ * number) or ISO 8601 extended datetime string (yyyy-MM-ddTHH:mm:ss.SSSZ).
* @param {string=} format Formatting rules. If not specified, Date#toLocaleDateString is used.
* @returns {string} Formatted string or the input if input is not recognized as date/millis.
*
diff --git a/src/parser.js b/src/parser.js
index 77800209..97d5740d 100644
--- a/src/parser.js
+++ b/src/parser.js
@@ -26,7 +26,7 @@ var OPERATORS = {
var ESCAPE = {"n":"\n", "f":"\f", "r":"\r", "t":"\t", "v":"\v", "'":"'", '"':'"'};
function lex(text, parseStringsForObjects){
- var dateParseLength = parseStringsForObjects ? 20 : -1,
+ var dateParseLength = parseStringsForObjects ? 24 : -1,
tokens = [],
token,
index = 0,