testing/mochitest/tests/MochiKit-1.4.2/MochiKit/DateTime.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /***
     3 MochiKit.DateTime 1.4.2
     5 See <http://mochikit.com/> for documentation, downloads, license, etc.
     7 (c) 2005 Bob Ippolito.  All rights Reserved.
     9 ***/
    11 MochiKit.Base._deps('DateTime', ['Base']);
    13 MochiKit.DateTime.NAME = "MochiKit.DateTime";
    14 MochiKit.DateTime.VERSION = "1.4.2";
    15 MochiKit.DateTime.__repr__ = function () {
    16     return "[" + this.NAME + " " + this.VERSION + "]";
    17 };
    18 MochiKit.DateTime.toString = function () {
    19     return this.__repr__();
    20 };
    22 /** @id MochiKit.DateTime.isoDate */
    23 MochiKit.DateTime.isoDate = function (str) {
    24     str = str + "";
    25     if (typeof(str) != "string" || str.length === 0) {
    26         return null;
    27     }
    28     var iso = str.split('-');
    29     if (iso.length === 0) {
    30         return null;
    31     }
    32 	var date = new Date(iso[0], iso[1] - 1, iso[2]);
    33 	date.setFullYear(iso[0]);
    34 	date.setMonth(iso[1] - 1);
    35 	date.setDate(iso[2]);
    36     return date;
    37 };
    39 MochiKit.DateTime._isoRegexp = /(\d{4,})(?:-(\d{1,2})(?:-(\d{1,2})(?:[T ](\d{1,2}):(\d{1,2})(?::(\d{1,2})(?:\.(\d+))?)?(?:(Z)|([+-])(\d{1,2})(?::(\d{1,2}))?)?)?)?)?/;
    41 /** @id MochiKit.DateTime.isoTimestamp */
    42 MochiKit.DateTime.isoTimestamp = function (str) {
    43     str = str + "";
    44     if (typeof(str) != "string" || str.length === 0) {
    45         return null;
    46     }
    47     var res = str.match(MochiKit.DateTime._isoRegexp);
    48     if (typeof(res) == "undefined" || res === null) {
    49         return null;
    50     }
    51     var year, month, day, hour, min, sec, msec;
    52     year = parseInt(res[1], 10);
    53     if (typeof(res[2]) == "undefined" || res[2] === '') {
    54         return new Date(year);
    55     }
    56     month = parseInt(res[2], 10) - 1;
    57     day = parseInt(res[3], 10);
    58     if (typeof(res[4]) == "undefined" || res[4] === '') {
    59         return new Date(year, month, day);
    60     }
    61     hour = parseInt(res[4], 10);
    62     min = parseInt(res[5], 10);
    63     sec = (typeof(res[6]) != "undefined" && res[6] !== '') ? parseInt(res[6], 10) : 0;
    64     if (typeof(res[7]) != "undefined" && res[7] !== '') {
    65         msec = Math.round(1000.0 * parseFloat("0." + res[7]));
    66     } else {
    67         msec = 0;
    68     }
    69     if ((typeof(res[8]) == "undefined" || res[8] === '') && (typeof(res[9]) == "undefined" || res[9] === '')) {
    70         return new Date(year, month, day, hour, min, sec, msec);
    71     }
    72     var ofs;
    73     if (typeof(res[9]) != "undefined" && res[9] !== '') {
    74         ofs = parseInt(res[10], 10) * 3600000;
    75         if (typeof(res[11]) != "undefined" && res[11] !== '') {
    76             ofs += parseInt(res[11], 10) * 60000;
    77         }
    78         if (res[9] == "-") {
    79             ofs = -ofs;
    80         }
    81     } else {
    82         ofs = 0;
    83     }
    84     return new Date(Date.UTC(year, month, day, hour, min, sec, msec) - ofs);
    85 };
    87 /** @id MochiKit.DateTime.toISOTime */
    88 MochiKit.DateTime.toISOTime = function (date, realISO/* = false */) {
    89     if (typeof(date) == "undefined" || date === null) {
    90         return null;
    91     }
    92     var hh = date.getHours();
    93     var mm = date.getMinutes();
    94     var ss = date.getSeconds();
    95     var lst = [
    96         ((realISO && (hh < 10)) ? "0" + hh : hh),
    97         ((mm < 10) ? "0" + mm : mm),
    98         ((ss < 10) ? "0" + ss : ss)
    99     ];
   100     return lst.join(":");
   101 };
   103 /** @id MochiKit.DateTime.toISOTimeStamp */
   104 MochiKit.DateTime.toISOTimestamp = function (date, realISO/* = false*/) {
   105     if (typeof(date) == "undefined" || date === null) {
   106         return null;
   107     }
   108     var sep = realISO ? "T" : " ";
   109     var foot = realISO ? "Z" : "";
   110     if (realISO) {
   111         date = new Date(date.getTime() + (date.getTimezoneOffset() * 60000));
   112     }
   113     return MochiKit.DateTime.toISODate(date) + sep + MochiKit.DateTime.toISOTime(date, realISO) + foot;
   114 };
   116 /** @id MochiKit.DateTime.toISODate */
   117 MochiKit.DateTime.toISODate = function (date) {
   118     if (typeof(date) == "undefined" || date === null) {
   119         return null;
   120     }
   121     var _padTwo = MochiKit.DateTime._padTwo;
   122 	var _padFour = MochiKit.DateTime._padFour;
   123     return [
   124         _padFour(date.getFullYear()),
   125         _padTwo(date.getMonth() + 1),
   126         _padTwo(date.getDate())
   127     ].join("-");
   128 };
   130 /** @id MochiKit.DateTime.americanDate */
   131 MochiKit.DateTime.americanDate = function (d) {
   132     d = d + "";
   133     if (typeof(d) != "string" || d.length === 0) {
   134         return null;
   135     }
   136     var a = d.split('/');
   137     return new Date(a[2], a[0] - 1, a[1]);
   138 };
   140 MochiKit.DateTime._padTwo = function (n) {
   141     return (n > 9) ? n : "0" + n;
   142 };
   144 MochiKit.DateTime._padFour = function(n) {
   145 	switch(n.toString().length) {
   146 		case 1: return "000" + n; break;
   147 		case 2: return "00" + n; break;
   148 		case 3: return "0" + n; break;
   149 		case 4:
   150 		default:
   151 			return n;
   152 	}
   153 };
   155 /** @id MochiKit.DateTime.toPaddedAmericanDate */
   156 MochiKit.DateTime.toPaddedAmericanDate = function (d) {
   157     if (typeof(d) == "undefined" || d === null) {
   158         return null;
   159     }
   160     var _padTwo = MochiKit.DateTime._padTwo;
   161     return [
   162         _padTwo(d.getMonth() + 1),
   163         _padTwo(d.getDate()),
   164         d.getFullYear()
   165     ].join('/');
   166 };
   168 /** @id MochiKit.DateTime.toAmericanDate */
   169 MochiKit.DateTime.toAmericanDate = function (d) {
   170     if (typeof(d) == "undefined" || d === null) {
   171         return null;
   172     }
   173     return [d.getMonth() + 1, d.getDate(), d.getFullYear()].join('/');
   174 };
   176 MochiKit.DateTime.EXPORT = [
   177     "isoDate",
   178     "isoTimestamp",
   179     "toISOTime",
   180     "toISOTimestamp",
   181     "toISODate",
   182     "americanDate",
   183     "toPaddedAmericanDate",
   184     "toAmericanDate"
   185 ];
   187 MochiKit.DateTime.EXPORT_OK = [];
   188 MochiKit.DateTime.EXPORT_TAGS = {
   189     ":common": MochiKit.DateTime.EXPORT,
   190     ":all": MochiKit.DateTime.EXPORT
   191 };
   193 MochiKit.DateTime.__new__ = function () {
   194     // MochiKit.Base.nameFunctions(this);
   195     var base = this.NAME + ".";
   196     for (var k in this) {
   197         var o = this[k];
   198         if (typeof(o) == 'function' && typeof(o.NAME) == 'undefined') {
   199             try {
   200                 o.NAME = base + k;
   201             } catch (e) {
   202                 // pass
   203             }
   204         }
   205     }
   206 };
   208 MochiKit.DateTime.__new__();
   210 if (typeof(MochiKit.Base) != "undefined") {
   211     MochiKit.Base._exportSymbols(this, MochiKit.DateTime);
   212 } else {
   213     (function (globals, module) {
   214         if ((typeof(JSAN) == 'undefined' && typeof(dojo) == 'undefined')
   215             || (MochiKit.__export__ === false)) {
   216             var all = module.EXPORT_TAGS[":all"];
   217             for (var i = 0; i < all.length; i++) {
   218                 globals[all[i]] = module[all[i]];
   219             }
   220         }
   221     })(this, MochiKit.DateTime);
   222 }

mercurial