UNPKG

dareway-rui

Version:

509 lines (414 loc) 15.3 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports.default = void 0; /** * Copyright (c)2005-2009 Matt Kruse (javascripttoolbox.com) * * Dual licensed under the MIT and GPL licenses. * This basically means you can use this code however you want for * free, but don't claim to have written it yourself! * Donations always accepted: http://www.JavascriptToolbox.com/donate/ * * Please do not link to the .js files on javascripttoolbox.com from * your site. Copy the files locally to your server instead. * */ /* Date functions These functions are used to parse, format, and manipulate Date objects. See documentation and examples at http://www.JavascriptToolbox.com/lib/date/ */ Date.$VERSION = 1.02; // Utility function to append a 0 to single-digit numbers Date.LZ = function(x) { return (x < 0 || x > 9 ? '' : '0') + x; }; // Full month names. Change this for local month names Date.monthNames = new Array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ); // Month abbreviations. Change this for local month names Date.monthAbbreviations = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); // Full day names. Change this for local month names Date.dayNames = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); // Day abbreviations. Change this for local month names Date.dayAbbreviations = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); // Used for parsing ambiguous dates like 1/2/2000 - default to preferring 'American' format meaning Jan 2. // Set to false to prefer 'European' format meaning Feb 1 Date.preferAmericanFormat = true; // If the getFullYear() method is not defined, create it if (!Date.prototype.getFullYear) { Date.prototype.getFullYear = function() { var yy = this.getYear(); return yy < 1900 ? yy + 1900 : yy; }; } // Parse a string and convert it to a Date object. // If no format is passed, try a list of common formats. // If string cannot be parsed, return null. // Avoids regular expressions to be more portable. Date.parseString = function(val, format) { // If no format is specified, try a few common formats if (typeof format == 'undefined' || format == null || format == '') { var generalFormats = new Array('y-M-d', 'MMM d, y', 'MMM d,y', 'y-MMM-d', 'd-MMM-y', 'MMM d', 'MMM-d', 'd-MMM'); var monthFirst = new Array('M/d/y', 'M-d-y', 'M.d.y', 'M/d', 'M-d'); var dateFirst = new Array('d/M/y', 'd-M-y', 'd.M.y', 'd/M', 'd-M'); var checkList = new Array( generalFormats, Date.preferAmericanFormat ? monthFirst : dateFirst, Date.preferAmericanFormat ? dateFirst : monthFirst ); for (var i = 0; i < checkList.length; i++) { var l = checkList[i]; for (var j = 0; j < l.length; j++) { var d = Date.parseString(val, l[j]); if (d != null) { return d; } } } return null; } this.isInteger = function(val) { for (var i = 0; i < val.length; i++) { if ('1234567890'.indexOf(val.charAt(i)) == -1) { return false; } } return true; }; this.getInt = function(str, i, minlength, maxlength) { for (var x = maxlength; x >= minlength; x--) { var token = str.substring(i, i + x); if (token.length < minlength) { return null; } if (this.isInteger(token)) { return token; } } return null; }; val = val + ''; format = format + ''; var i_val = 0; var i_format = 0; var c = ''; var token = ''; var token2 = ''; var x, y; var year = new Date().getFullYear(); var month = 1; var date = 1; var hh = 0; var mm = 0; var ss = 0; var ampm = ''; while (i_format < format.length) { // Get next token from format string c = format.charAt(i_format); token = ''; while (format.charAt(i_format) == c && i_format < format.length) { token += format.charAt(i_format++); } // Extract contents of value based on format token if (token == 'yyyy' || token == 'yy' || token == 'y') { if (token == 'yyyy') { x = 4; y = 4; } if (token == 'yy') { x = 2; y = 2; } if (token == 'y') { x = 2; y = 4; } year = this.getInt(val, i_val, x, y); if (year == null || year < 1) { return null; } i_val += year.length; if (year.length == 2) { if (year > 70) { year = 1900 + (year - 0); } else { year = 2000 + (year - 0); } } } else if (token == 'MMM' || token == 'NNN') { month = 0; var names = token == 'MMM' ? Date.monthNames.concat(Date.monthAbbreviations) : Date.monthAbbreviations; for (var i = 0; i < names.length; i++) { var month_name = names[i]; if (val.substring(i_val, i_val + month_name.length).toLowerCase() == month_name.toLowerCase()) { month = (i % 12) + 1; i_val += month_name.length; break; } } if (month < 1 || month > 12) { return null; } } else if (token == 'EE' || token == 'E') { var names = token == 'EE' ? Date.dayNames : Date.dayAbbreviations; for (var i = 0; i < names.length; i++) { var day_name = names[i]; if (val.substring(i_val, i_val + day_name.length).toLowerCase() == day_name.toLowerCase()) { i_val += day_name.length; break; } } } else if (token == 'MM' || token == 'M') { month = this.getInt(val, i_val, token.length, 2); if (month == null || month < 1 || month > 12) { return null; } i_val += month.length; } else if (token == 'dd' || token == 'd') { date = this.getInt(val, i_val, token.length, 2); if (date == null || date < 1 || date > 31) { return null; } i_val += date.length; } else if (token == 'hh' || token == 'h') { hh = this.getInt(val, i_val, token.length, 2); if (hh == null || hh < 1 || hh > 12) { return null; } i_val += hh.length; } else if (token == 'HH' || token == 'H') { hh = this.getInt(val, i_val, token.length, 2); if (hh == null || hh < 0 || hh > 23) { return null; } i_val += hh.length; } else if (token == 'KK' || token == 'K') { hh = this.getInt(val, i_val, token.length, 2); if (hh == null || hh < 0 || hh > 11) { return null; } i_val += hh.length; hh++; } else if (token == 'kk' || token == 'k') { hh = this.getInt(val, i_val, token.length, 2); if (hh == null || hh < 1 || hh > 24) { return null; } i_val += hh.length; hh--; } else if (token == 'mm' || token == 'm') { mm = this.getInt(val, i_val, token.length, 2); if (mm == null || mm < 0 || mm > 59) { return null; } i_val += mm.length; } else if (token == 'ss' || token == 's') { ss = this.getInt(val, i_val, token.length, 2); if (ss == null || ss < 0 || ss > 59) { return null; } i_val += ss.length; } else if (token == 'a') { if (val.substring(i_val, i_val + 2).toLowerCase() == 'am') { ampm = 'AM'; } else if (val.substring(i_val, i_val + 2).toLowerCase() == 'pm') { ampm = 'PM'; } else { return null; } i_val += 2; } else { if (val.substring(i_val, i_val + token.length) != token) { return null; } else { i_val += token.length; } } } // If there are any trailing characters left in the value, it doesn't match if (i_val != val.length) { return null; } // Is date valid for month? if (month == 2) { // Check for leap year if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { // leap year if (date > 29) { return null; } } else { if (date > 28) { return null; } } } if (month == 4 || month == 6 || month == 9 || month == 11) { if (date > 30) { return null; } } // Correct hours value if (hh < 12 && ampm == 'PM') { hh = hh - 0 + 12; } else if (hh > 11 && ampm == 'AM') { hh -= 12; } return new Date(year, month - 1, date, hh, mm, ss); }; // Check if a date string is valid Date.isValid = function(val, format) { return Date.parseString(val, format) != null; }; // Check if a date object is before another date object Date.prototype.isBefore = function(date2) { if (date2 == null) { return false; } return this.getTime() < date2.getTime(); }; // Check if a date object is after another date object Date.prototype.isAfter = function(date2) { if (date2 == null) { return false; } return this.getTime() > date2.getTime(); }; // Check if two date objects have equal dates and times Date.prototype.equals = function(date2) { if (date2 == null) { return false; } return this.getTime() == date2.getTime(); }; // Check if two date objects have equal dates, disregarding times Date.prototype.equalsIgnoreTime = function(date2) { if (date2 == null) { return false; } var d1 = new Date(this.getTime()).clearTime(); var d2 = new Date(date2.getTime()).clearTime(); return d1.getTime() == d2.getTime(); }; // Format a date into a string using a given format string Date.prototype.format = function(format) { format = format + ''; var result = ''; var i_format = 0; var c = ''; var token = ''; var y = this.getFullYear() + ''; var M = this.getMonth() + 1; var d = this.getDate(); var E = this.getDay(); var H = this.getHours(); var m = this.getMinutes(); var s = this.getSeconds(); var yyyy, yy, MMM, MM, dd, hh, h, mm, ss, ampm, HH, H, KK, K, kk, k; // Convert real date parts into formatted versions var value = new Object(); if (y.length < 4) { y = '' + (+y + 1900); } value['y'] = '' + y; value['yyyy'] = y; value['yy'] = y.substring(2, 4); value['M'] = M; value['MM'] = Date.LZ(M); value['MMM'] = Date.monthNames[M - 1]; value['NNN'] = Date.monthAbbreviations[M - 1]; value['d'] = d; value['dd'] = Date.LZ(d); value['E'] = Date.dayAbbreviations[E]; value['EE'] = Date.dayNames[E]; value['H'] = H; value['HH'] = Date.LZ(H); if (H == 0) { value['h'] = 12; } else if (H > 12) { value['h'] = H - 12; } else { value['h'] = H; } value['hh'] = Date.LZ(value['h']); value['K'] = value['h'] - 1; value['k'] = value['H'] + 1; value['KK'] = Date.LZ(value['K']); value['kk'] = Date.LZ(value['k']); if (H > 11) { value['a'] = 'PM'; } else { value['a'] = 'AM'; } value['m'] = m; value['mm'] = Date.LZ(m); value['s'] = s; value['ss'] = Date.LZ(s); while (i_format < format.length) { c = format.charAt(i_format); token = ''; while (format.charAt(i_format) == c && i_format < format.length) { token += format.charAt(i_format++); } if (typeof value[token] != 'undefined') { result = result + value[token]; } else { result = result + token; } } return result; }; // Get the full name of the day for a date Date.prototype.getDayName = function() { return Date.dayNames[this.getDay()]; }; // Get the abbreviation of the day for a date Date.prototype.getDayAbbreviation = function() { return Date.dayAbbreviations[this.getDay()]; }; // Get the full name of the month for a date Date.prototype.getMonthName = function() { return Date.monthNames[this.getMonth()]; }; // Get the abbreviation of the month for a date Date.prototype.getMonthAbbreviation = function() { return Date.monthAbbreviations[this.getMonth()]; }; // Clear all time information in a date object Date.prototype.clearTime = function() { this.setHours(0); this.setMinutes(0); this.setSeconds(0); this.setMilliseconds(0); return this; }; // Add an amount of time to a date. Negative numbers can be passed to subtract time. Date.prototype.add = function(interval, number) { if (typeof interval == 'undefined' || interval == null || typeof number == 'undefined' || number == null) { return this; } number = +number; if (interval == 'y') { // year this.setFullYear(this.getFullYear() + number); } else if (interval == 'M') { // Month this.setMonth(this.getMonth() + number); } else if (interval == 'd') { // Day this.setDate(this.getDate() + number); } else if (interval == 'w') { // Weekday var step = number > 0 ? 1 : -1; while (number != 0) { this.add('d', step); while (this.getDay() == 0 || this.getDay() == 6) { this.add('d', step); } number -= step; } } else if (interval == 'h') { // Hour this.setHours(this.getHours() + number); } else if (interval == 'm') { // Minute this.setMinutes(this.getMinutes() + number); } else if (interval == 's') { // Second this.setSeconds(this.getSeconds() + number); } return this; }; var _default = Date; exports.default = _default; //@ sourceMappingURL=date.js.map