Skip to content

Instantly share code, notes, and snippets.

@rlr
Created August 12, 2010 18:18
Show Gist options
  • Save rlr/521402 to your computer and use it in GitHub Desktop.
Save rlr/521402 to your computer and use it in GitHub Desktop.

Revisions

  1. rlr revised this gist Aug 12, 2010. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions ISO8601.js
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,5 @@
    // from http://delete.me.uk/2005/03/iso8601.html

    Date.prototype.setISO8601 = function (string) {
    var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
    "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
  2. rlr created this gist Aug 12, 2010.
    24 changes: 24 additions & 0 deletions ISO8601.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    Date.prototype.setISO8601 = function (string) {
    var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
    "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
    "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
    var d = string.match(new RegExp(regexp));

    var offset = 0;
    var date = new Date(d[1], 0, 1);

    if (d[3]) { date.setMonth(d[3] - 1); }
    if (d[5]) { date.setDate(d[5]); }
    if (d[7]) { date.setHours(d[7]); }
    if (d[8]) { date.setMinutes(d[8]); }
    if (d[10]) { date.setSeconds(d[10]); }
    if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
    if (d[14]) {
    offset = (Number(d[16]) * 60) + Number(d[17]);
    offset *= ((d[15] == '-') ? 1 : -1);
    }

    offset -= date.getTimezoneOffset();
    time = (Number(date) + (offset * 60 * 1000));
    this.setTime(Number(time));
    }