You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					198 lines
				
				4.2 KiB
			
		
		
			
		
	
	
					198 lines
				
				4.2 KiB
			| 
											3 years ago
										 | 'use strict'; | ||
|  | 
 | ||
|  | var MONTHS = [ | ||
|  |   'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' | ||
|  | ]; | ||
|  | 
 | ||
|  | // only set once.
 | ||
|  | var TIMEZONE = ' '; | ||
|  | var _hourOffset = parseInt(-(new Date().getTimezoneOffset()) / 60, 10); | ||
|  | if (_hourOffset >= 0) { | ||
|  |   TIMEZONE += '+'; | ||
|  | } else { | ||
|  |   TIMEZONE += '-'; | ||
|  | } | ||
|  | _hourOffset = Math.abs(_hourOffset); | ||
|  | if (_hourOffset < 10) { | ||
|  |   _hourOffset = '0' + _hourOffset; | ||
|  | } | ||
|  | TIMEZONE += _hourOffset + '00'; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Access log format date. format: `moment().format('DD/MMM/YYYY:HH:mm:ss ZZ')` | ||
|  |  * | ||
|  |  * @return {String} | ||
|  |  */ | ||
|  | exports.accessLogDate = function (d) { | ||
|  |   // 16/Apr/2013:16:40:09 +0800
 | ||
|  |   d = d || new Date(); | ||
|  |   var date = d.getDate(); | ||
|  |   if (date < 10) { | ||
|  |     date = '0' + date; | ||
|  |   } | ||
|  |   var hours = d.getHours(); | ||
|  |   if (hours < 10) { | ||
|  |     hours = '0' + hours; | ||
|  |   } | ||
|  |   var mintues = d.getMinutes(); | ||
|  |   if (mintues < 10) { | ||
|  |     mintues = '0' + mintues; | ||
|  |   } | ||
|  |   var seconds = d.getSeconds(); | ||
|  |   if (seconds < 10) { | ||
|  |     seconds = '0' + seconds; | ||
|  |   } | ||
|  |   return date + '/' + MONTHS[d.getMonth()] + '/' + d.getFullYear() + | ||
|  |     ':' + hours + ':' + mintues + ':' + seconds + TIMEZONE; | ||
|  | }; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Normal log format date. format: `moment().format('YYYY-MM-DD HH:mm:ss.SSS')` | ||
|  |  * | ||
|  |  * @return {String} | ||
|  |  */ | ||
|  | exports.logDate = exports.YYYYMMDDHHmmssSSS = function (d, msSep) { | ||
|  |   if (typeof d === 'string') { | ||
|  |     // logDate(msSep)
 | ||
|  |     msSep = d; | ||
|  |     d = new Date(); | ||
|  |   } else { | ||
|  |     // logDate(d, msSep)
 | ||
|  |     d = d || new Date(); | ||
|  |   } | ||
|  |   var date = d.getDate(); | ||
|  |   if (date < 10) { | ||
|  |     date = '0' + date; | ||
|  |   } | ||
|  |   var month = d.getMonth() + 1; | ||
|  |   if (month < 10) { | ||
|  |     month = '0' + month; | ||
|  |   } | ||
|  |   var hours = d.getHours(); | ||
|  |   if (hours < 10) { | ||
|  |     hours = '0' + hours; | ||
|  |   } | ||
|  |   var mintues = d.getMinutes(); | ||
|  |   if (mintues < 10) { | ||
|  |     mintues = '0' + mintues; | ||
|  |   } | ||
|  |   var seconds = d.getSeconds(); | ||
|  |   if (seconds < 10) { | ||
|  |     seconds = '0' + seconds; | ||
|  |   } | ||
|  |   var milliseconds = d.getMilliseconds(); | ||
|  |   if (milliseconds < 10) { | ||
|  |     milliseconds = '00' + milliseconds; | ||
|  |   } else if (milliseconds < 100) { | ||
|  |     milliseconds = '0' + milliseconds; | ||
|  |   } | ||
|  |   return d.getFullYear() + '-' + month + '-' + date + ' ' + | ||
|  |     hours + ':' + mintues + ':' + seconds + (msSep || '.') + milliseconds; | ||
|  | }; | ||
|  | 
 | ||
|  | /** | ||
|  |  * `moment().format('YYYY-MM-DD HH:mm:ss')` format date string. | ||
|  |  * | ||
|  |  * @return {String} | ||
|  |  */ | ||
|  | exports.YYYYMMDDHHmmss = function (d, options) { | ||
|  |   d = d || new Date(); | ||
|  |   if (!(d instanceof Date)) { | ||
|  |     d = new Date(d); | ||
|  |   } | ||
|  | 
 | ||
|  |   var dateSep = '-'; | ||
|  |   var timeSep = ':'; | ||
|  |   if (options) { | ||
|  |     if (options.dateSep) { | ||
|  |       dateSep = options.dateSep; | ||
|  |     } | ||
|  |     if (options.timeSep) { | ||
|  |       timeSep = options.timeSep; | ||
|  |     } | ||
|  |   } | ||
|  |   var date = d.getDate(); | ||
|  |   if (date < 10) { | ||
|  |     date = '0' + date; | ||
|  |   } | ||
|  |   var month = d.getMonth() + 1; | ||
|  |   if (month < 10) { | ||
|  |     month = '0' + month; | ||
|  |   } | ||
|  |   var hours = d.getHours(); | ||
|  |   if (hours < 10) { | ||
|  |     hours = '0' + hours; | ||
|  |   } | ||
|  |   var mintues = d.getMinutes(); | ||
|  |   if (mintues < 10) { | ||
|  |     mintues = '0' + mintues; | ||
|  |   } | ||
|  |   var seconds = d.getSeconds(); | ||
|  |   if (seconds < 10) { | ||
|  |     seconds = '0' + seconds; | ||
|  |   } | ||
|  |   return d.getFullYear() + dateSep + month + dateSep + date + ' ' + | ||
|  |     hours + timeSep + mintues + timeSep + seconds; | ||
|  | }; | ||
|  | 
 | ||
|  | /** | ||
|  |  * `moment().format('YYYY-MM-DD')` format date string. | ||
|  |  * | ||
|  |  * @return {String} | ||
|  |  */ | ||
|  | exports.YYYYMMDD = function YYYYMMDD(d, sep) { | ||
|  |   if (typeof d === 'string') { | ||
|  |     // YYYYMMDD(sep)
 | ||
|  |     sep = d; | ||
|  |     d = new Date(); | ||
|  |   } else { | ||
|  |     // YYYYMMDD(d, sep)
 | ||
|  |     d = d || new Date(); | ||
|  |     if (typeof sep !== 'string') { | ||
|  |       sep = '-'; | ||
|  |     } | ||
|  |   } | ||
|  |   var date = d.getDate(); | ||
|  |   if (date < 10) { | ||
|  |     date = '0' + date; | ||
|  |   } | ||
|  |   var month = d.getMonth() + 1; | ||
|  |   if (month < 10) { | ||
|  |     month = '0' + month; | ||
|  |   } | ||
|  |   return d.getFullYear() + sep + month + sep + date; | ||
|  | }; | ||
|  | 
 | ||
|  | /** | ||
|  |  * return datetime struct. | ||
|  |  * | ||
|  |  * @return {Object} date | ||
|  |  *  - {Number} YYYYMMDD, 20130401 | ||
|  |  *  - {Number} H, 0, 1, 9, 12, 23 | ||
|  |  */ | ||
|  | exports.datestruct = function (now) { | ||
|  |   now = now || new Date(); | ||
|  |   return { | ||
|  |     YYYYMMDD: now.getFullYear() * 10000 + (now.getMonth() + 1) * 100 + now.getDate(), | ||
|  |     H: now.getHours() | ||
|  |   }; | ||
|  | }; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Get Unix's timestamp in seconds. | ||
|  |  * @return {Number} | ||
|  |  */ | ||
|  | exports.timestamp = function timestamp(t) { | ||
|  |   if (t) { | ||
|  |     var v = t; | ||
|  |     if (typeof v === 'string') { | ||
|  |       v = Number(v); | ||
|  |     } | ||
|  |     if (String(t).length === 10) { | ||
|  |       v *= 1000; | ||
|  |     } | ||
|  |     return new Date(v); | ||
|  |   } | ||
|  |   return Math.round(Date.now() / 1000); | ||
|  | }; |