Nodejs Date ISO Format toISOLocalString()

Here you can find the source of toISOLocalString()

Method Source Code

/**//from  w ww. j  av  a 2s  .co m
 * Converts a native Date UTC String to a RFC 3339-compliant date string with local offsets
 * used in ODK, so it replaces the Z in the ISOstring with a local offset
 * @return {string} a datetime string formatted according to RC3339 with local offset
 */
Date.prototype.toISOLocalString = function() {
    //2012-09-05T12:57:00.000-04:00 (ODK)

    if ( this.toString() === 'Invalid Date' ) {
        return this.toString();
    }

    return new Date( this.getTime() - ( this.getTimezoneOffset() * 60 * 1000 ) ).toISOString()
        .replace( 'Z', this.getTimezoneOffsetAsTime() );
};

Date.prototype.getTimezoneOffsetAsTime = function() {
    var offsetMinutesTotal;
    var hours;
    var minutes;
    var direction;
    var pad2 = function( x ) {
        return ( x < 10 ) ? '0' + x : x;
    };

    if ( this.toString() === 'Invalid Date' ) {
        return this.toString();
    }

    offsetMinutesTotal = this.getTimezoneOffset();

    direction = ( offsetMinutesTotal < 0 ) ? '+' : '-';
    hours = pad2( Math.abs( Math.floor( offsetMinutesTotal / 60 ) ) );
    minutes = pad2( Math.abs( Math.floor( offsetMinutesTotal % 60 ) ) );

    return direction + hours + ':' + minutes;
};

Related

  1. rfc3339()
    function f(n) {    
        return n < 10 ? '0' + n : n;
    Date.prototype.rfc3339 = function() {
        return this.getUTCFullYear()   + '-' +
             f(this.getUTCMonth() + 1) + '-' +
             f(this.getUTCDate())      + 'T' +
             f(this.getUTCHours())     + ':' +
             f(this.getUTCMinutes())   + ':' +
    ...
    
  2. rfc822date()
    "use strict";
    Date.prototype.rfc822date = function() {
        var weekday_name = { 0:'Sun', 1:'Mon', 2:'Tue', 3:'Wed', 4:'Thu', 5:'Fri', 6: 'Sat' };
        var month_name = { 0:'Jan', 1:'Feb', 2:'Mar', 3:'Apr', 4:'May', 5:'Jun', 6: 'Jul', 7:'Aug', 8:'Sep', 9:'Oct', 10:'Nov', 11:'Dec' };
        var zeropad = function(num, length) {
            if ( length === undefined ) {
                length = 2;
            var add = length - num.toString().length;
    ...
    
  3. toISO8601String(format, offset)
    Date.prototype.toISO8601String = function (format, offset) {
        if (!format) { var format = 6; }
        if (!offset) {
            var offset = 'Z';
            var date = this;
        } else {
            var d = offset.match(/([-+])([0-9]{2}):([0-9]{2})/);
            var offsetnum = (Number(d[2]) * 60) + Number(d[3]);
            offsetnum *= ((d[1] == '-') ? -1 : 1);
    ...
    
  4. toISO8601String(offset)
    Date.prototype.toISO8601String = function (offset) {
        if (!offset) {
            var offset = 'Z';
            var date = this;
        } else {
            var d = offset.match(/([-+])([0-9]{2}):([0-9]{2})/);
            var offsetnum = (Number(d[2]) * 60) + Number(d[3]);
            offsetnum *= ((d[1] == '-') ? -1 : 1);
            var date = new Date(Number(Number(this) + (offsetnum * 60000)));
    ...
    
  5. toISODateString()
    Date.prototype.toISODateString = function() {
        function pad(n){
            return n < 10 ? '0' + n : n
        function pad3(n){
            if (n < 10) return '00' + n;
            if (n < 100) return '0' + n;
            return n;
        return this.getUTCFullYear()+'-'
        + pad(this.getUTCMonth()+1)+'-'
        + pad(this.getUTCDate())+'T'
        + pad(this.getUTCHours())+':'
        + pad(this.getUTCMinutes())+':'
        + pad(this.getUTCSeconds())+'.'
        + pad3(this.getUTCMilliseconds())+'Z'
    
  6. toISOLocalString()
    Date.prototype.toISOLocalString = function() {
        var offset = {},
            pad2 = function( x ) {
                return ( x < 10 ) ? '0' + x : x;
            };
        if ( this.toString() === 'Invalid Date' ) {
            return this.toString();
        offset.minstotal = this.getTimezoneOffset();
    ...
    
  7. toISOString()
    Date.prototype.toISOString = function() {
      return this.getUTCFullYear()
        + "-" + ("0" + (this.getUTCMonth() + 1)).substr(-2, 2)
        + "-" + ("0" + this.getUTCDate()).substr(-2, 2)
        + "T" + ("0" + this.getUTCHours()).substr(-2, 2)
        + ":" + ("0" + this.getUTCMinutes()).substr(-2, 2)
        + ":" + ("0" + this.getUTCSeconds()).substr(-2, 2)
        + "Z";
    
  8. toISOString()
    Date.prototype.toISOString = function() {
      return this.getFullYear() + '-' + zpad(this.getMonth() + 1) + '-' + zpad(this.getDate()) + 'T' + zpad(this.getHours()) + ':' + zpad(this.getMinutes());
    
  9. toISOString()
    function OzeroPad(val) {
      return val < 10 ? '0' + val : '' + val;
    if(!Date.prototype.toISOString) {
      Date.prototype.toISOString = function () {
        var YYYY = this.getUTCFullYear(),
        MM = OzeroPad(this.getUTCMonth() + 1),
        DD = OzeroPad(this.getUTCDate()),
        HH = OzeroPad(this.getUTCHours()),
    ...