JavaScript 日期延长

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 日期延长相关的知识,希望对你有一定的参考价值。

/*-----------------------------------------------------------------------------
 * Date Extend
 *  Example Source
	Date.UTC = true;
	document.write(Date.getFormatTime('%Y-%M-%DT%H:%M:%S%Z') + '<br>');
	var p = new Date();
	p.UTC = false;
	p.setFormatTime('2001-08-02T10:45:23.5');
	p.setLocale('ja');
	document.write(p.getFormatTime());
 *-------------------------------------------------------------------------- */

Date.isLeapYear = function (year) {
	return (
		((year % 400) == 0) ? 1 :
		((year % 100) == 0) ? 0 :
		((year % 4)   == 0) ? 1 :
		0
	);
}

Date.prototype.isLeapYear = function () {
	return Date.isLeapYear((this.utc) ? this.getUTCFullYear() : this.getFullYear());
}

/*
 * Local
 */

Date._locale = {
	en: {
		n: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
		N: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
		l: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
		L: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
		a: ['am', 'pm'],
		A: ['AM', 'PM'],
		format: '%l, %D %n %Y %H:%I:%S'
	},
	ja: {
		n: [' 1\u6708', ' 2\u6708', ' 3\u6708', ' 4\u6708', ' 5\u6708', ' 6\u6708', ' 7\u6708', ' 8\u6708', ' 9\u6708', '10\u6708', '11\u6708', '12\u6708'],
		N: ['1\u6708', '2\u6708', '3\u6708', '4\u6708', '5\u6708', '6\u6708', '7\u6708', '8\u6708', '9\u6708', '10\u6708', '11\u6708', '12\u6708'],
		l: ['\u65E5', '\u6708', '\u706B', '\u6C34', '\u6728', '\u91D1', '\u571F'],
		L: ['\u65E5\u66DC\u65E5', '\u6708\u66DC\u65E5', '\u706B\u66DC\u65E5', '\u6C34\u66DC\u65E5', '\u6728\u66DC\u65E5', '\u91D1\u66DC\u65E5', '\u571F\u66DC\u65E5'],
		a: ['AM', 'PM'],
		A: ['\u5348\u524D', '\u5348\u5F8C'],
		format: '%Y\u5E74%m\u6708%d\u65E5 %A%g\u6642%i\u5206%s\u79D2'
	}
}

Date.UTC    = false;
Date.locale = 'en';

Date.setLocale = function (lc) {
	Date.locale = lc || 'en';
}

Date.prototype.setLocale = function (lc) {
	this.locale = lc;
	return this;
}

/*
 * Format
 * Year ----- %y (2), %Y (4)
 * Month ---- %m (1), %M (2), %n (ry), %N (Full)
 * Date ----- %d (1), %D (2)
 * Day ------ %l (ry), %L (Full), %w
 * Hour ----- %h (1), %H (2) (24), %g (1), %G (2) (12)
 * Minite --- %i (1), %I (2)
 * Second --- %s (1), %S (2)
 * AM, PM --- %a, %A
 * TimeZone - %z (Min), %Z (+/-HH:MM)
 * Beet ----- %B
 */

Date.getFormatTime = function (format) {
	return (new Date()).getFormatTime(format);
}

Date.prototype.getFormatTime = function (format) {
	var locale = Date._locale[this.locale || Date.locale];
	format = format || locale['format'];
	if (this.UTC != true && this.UTC != false)
		this.UTC = Date.UTC;
	var y = (this.UTC) ? this.getUTCFullYear() : this.getFullYear(),
	    m = (this.UTC) ? this.getUTCMonth()    : this.getMonth(),
	    d = (this.UTC) ? this.getUTCDate()     : this.getDate(),
	    w = (this.UTC) ? this.getUTCDay()      : this.getDay(),
	    h = (this.UTC) ? this.getUTCHours()    : this.getHours(),
	    i = (this.UTC) ? this.getUTCMinutes()  : this.getMinutes(),
	    s = (this.UTC) ? this.getUTCSeconds()  : this.getSeconds(),
	    w = (this.UTC) ? this.getUTCDay()      : this.getDay()
	    z = this.getTimezoneOffset();
	return format.replaceMulti({
		'%y': ('' + y).slice(2),
		'%Y': y,
		'%m': m + 1,
		'%M': (m + 1).zeropad(2),
		'%n': locale['n'][m],
		'%N': locale['N'][m],
		'%d': d,
		'%D': d.zeropad(2),
		'%l': locale['l'][w],
		'%L': locale['L'][w],
		'%w': w,
		'%h': h,
		'%H': h.zeropad(2),
		'%g': h % 12 || 12,
		'%G': (h % 12 || 12).zeropad(2),
		'%i': i,
		'%I': i.zeropad(2),
		'%s': s,
		'%S': s.zeropad(2),
		'%a': locale['a'][Math.floor(h / 12 || 1)],
		'%A': locale['A'][Math.floor(h / 12 || 1)],
		'%z': z,
		'%Z': (z *= -1, ((z < 0) ? '' : '+') + Math.floor(z / 60).zeropad(2) + ':' + (z % 60).zeropad(2)),
		'%B': this.getInternetTime()
	}, 'g');
}

Date.getInternetTime = function () {
	return (new Date()).getInternetTime();
}

Date.prototype.getInternetTime = function () {
	var t = this.getUTCHours() + 1;
	return Math.floor((((t > 23) ? 0 : t * 3600) + this.getUTCMinutes() * 60 + this.getUTCSeconds()) / 86.4).zeropad(3);
}

/*
 * Format
 * Year
 *   YYYY (ex: 2001)
 * Year Month
 *   YYYY-MM (ex: 2001-08)
 * Year Month Day
 *   YYYY-MM-DD (ex: 2001-08-02)
 * Year Month Day Hour Minite
 *   YYYY-MM-DDThh:mm (ex: 2001-08-02T10:45)
 * Year Month Day Hour Minite Second
 *   YYYY-MM-DDThh:mm:ss (ex: 2001-08-02T10:45:23)
 * Year Month Day Hour Minite Second Millisecond
 *   YYYY-MM-DDThh:mm:ss.s (ex: 2001-08-02T10:45:23.5)
 */

Date.prototype.setFormatTime = function (format) {
	var tmp  = format.split('T');
	var date = tmp[0].split('-');
	this.setFullYear(parseInt(date[0] || 0, 10));
	this.setMonth(parseInt(date[1] || 1, 10) - 1);
	this.setDate(parseInt(date[2] || 1, 10));
	if (tmp[1]) {
		var time = tmp[1].split(':');
		this.setHours(parseInt(time[0] || 0, 10));
		this.setMinutes(parseInt(time[1] || 0, 10));
		this.setSeconds(Math.floor(parseInt(time[2] || 0, 10)));
		this.setMilliseconds(parseInt(time[2] || 0, 10) * 1000 % 1000);
	}
}

Date.prototype.setInternetTime = function (beet) {
	var t = parseInt(beet), p;
	t = ((t < 0) ? 0 : (t > 999) ? 999 : t) * 86.4;
	this.setUTCHours(((p = Math.floor(t / 3600)) == 0) ? 23 : p - 1);
	t -= (p * 3600);
	this.setUTCMinutes(p = Math.floor(t / 60));
	this.setUTCSeconds(t - (p * 60));
}

/*
 * Extend
 */

String.prototype.replaceMulti = function (p, o) {
	var t = this;
	if (!o) o = '';
	for (var i in p)
		t = t.replace(new RegExp(i, o), p[i]);
	return t;
}

Number.prototype.zeropad = function (c) {
	return (
		(this < 0) ? '-' + (this * -1).zeropad(c) :
		(('' + this).length >= c) ? this :
		('0'.repeat(c) + this).slice(-c)
	);
}

以上是关于JavaScript 日期延长的主要内容,如果未能解决你的问题,请参考以下文章

mysql日期延长30天

mysql日期延长30天

r 延长epi曲线的日期限制

mysql日期延长30天

买方团延长和利时股东提交同意的截止日期至2021年8月20日

JavaScript 延长间隔