JavaScript日期处理函数

/**
 * 计算一个日期相隔几天的日期
 * @param date,日期对象,可选参数,默认为系统当前时间
 * @param interval,相隔天数,负数代表前几天,正数代表后几天,可选参数,默认为1
 * @returns {Date}
 */
function nextDay(date, interval) {
	interval = typeof (date) == 'number' ? date : isNaN(interval) ? 1 : interval;
	date = typeof (date) == 'object' && !isNaN(date) ? date : new Date();
	
	var nextday = new Date();
	nextday.setTime(nextday.getTime() + interval * 24 * 60 * 60 * 1000);
	return nextday;
}

/**
 * 把日期字符串转换成日期对象
 * @param datestr,日期字符串,格式:yyyy分隔符MM分隔符dd,必须参数
 * @returns {Date}
 */
function getDate(datestr) {
	datestr = datestr.split(datestr.charAt(4));
	
	var date = new Date();
	date.setFullYear(datestr[0], datestr[1], datestr[2]);
	return date;
}

/**
 * 格式化日期
 * @param date,日期对象,可选参数,默认为系统当前时间
 * @param fill,月日时分秒小于10时是否补零,可选参数,默认为false
 * @returns {yyyy-MM-dd HH:mm:ss}
 */
function formatDateTime(date, fill) {
	fill = typeof(date) == 'boolean' ? date : typeof(fill) == 'boolean' ? fill : false;
	date = typeof (date) == 'object' && !isNaN(date) ? date : new Date();

	var year = date.getFullYear();
	var month = date.getMonth() + 1;
	var day = date.getDate();
	var hour = date.getHours();
	var minute = date.getMinutes();
	var second = date.getSeconds();
	if (fill) {
		if (month < 10) month = "0" + month;
		if (day < 10) day = "0" + day;
		if (hour < 10) hour = "0" + hour;
		if (minute < 10) minute = "0" + minute;
		if (second < 10) second = "0" + second;
	}
	return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
}

/**
 * 格式化日期
 * @param date,日期对象,可选参数,默认为系统当前时间
 * @param separator 分隔符,可选参数,默认为"-"
 * @param fill,月日小于10时是否补零,可选参数,默认为false
 * @returns {yyyy分隔符MM分隔符dd}
 */
function formatDate(date, separator, fill) {
	fill = typeof(date) == 'boolean' ? date : typeof(separator) == 'boolean' ? separator : typeof(fill) == 'boolean' ? fill : false;
	separator = date && typeof(date) == 'string' ? date : separator && typeof(separator) == 'string' ? separator : "-";
	date = typeof (date) == 'object' && !isNaN(date) ? date : new Date();

	var year = date.getFullYear();
	var month = date.getMonth() + 1;
	var day = date.getDate();
	if (fill) {
		if (month < 10) month = "0" + month;
		if (day < 10) day = "0" + day;
	}
	return year + separator + month + separator + day;
}

/**
 * 格式化时间
 * @param date,日期对象,可选参数,默认为系统当前时间
 * @param separator 分隔符,可选参数,默认为":"
 * @param fill,时分秒小于10时是否补零,可选参数,默认为false
 * @returns {HH分隔符mm分隔符ss}
 */
function formatTime(date, separator, fill){
	fill = typeof(date) == 'boolean' ? date : typeof(separator) == 'boolean' ? separator : typeof(fill) == 'boolean' ? fill : false;
	separator = date && typeof(date) == 'string' ? date : separator && typeof(separator) == 'string' ? separator : "-";
	date = typeof (date) == 'object' && !isNaN(date) ? date : new Date();
	
	var hour = date.getHours();
	var minute = date.getMinutes();
	var second = date.getSeconds();
	if (fill) {
		if (hour < 10) hour = "0" + hour;
		if (minute < 10) minute = "0" + minute;
		if (second < 10) second = "0" + second;
	}
	return hour + separator + minute + separator + second;
}

/**
 * 获取星期
 * @param date,日期对象,可选参数,默认为系统当前时间
 * @param lang,语言,中文(zh)、英文(en)、日文(jp),可选参数,默认为"zh"
 * @returns {String}
 */
function getWeekday(date, lang) {
	lang = date && typeof(date) == 'string' ? date : lang ? lang : "zh";
	date = typeof (date) == 'object' && !isNaN(date) ? date : new Date();

	var weekday = [];
	if (lang == "zh") {
		weekday = [ '日', '一', '二', '三', '四', '五', '六' ];
	} else if (lang == "en") {
		weekday = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
	} else if (lang == "jp") {
		weekday = [ '日', '月', '火', '水', '木', '金', '土' ];
	}
	return weekday[date.getDay()];
}

/**
 * 计算两个日期之间相隔几天
 * @param datestr1,日期字符串,yyyy分隔符MM分隔符dd,必须参数
 * @param datestr2,日期字符串,yyyy分隔符MM分隔符dd,必须参数
 * @param separator 分隔符,可选参数,默认为":"
 * @returns {Number}
 */
function getIntervalDays(datestr1, datestr2, separator) {
	separator = separator ? separator : "-";

	datestr1 = datestr1.split(separator);
	var date1 = new Date();
	date1.setFullYear(datestr1[0], datestr1[1], datestr1[2]);
	datestr2 = datestr2.split(separator);
	var date2 = new Date();
	date2.setFullYear(datestr2[0], datestr2[1], datestr2[2]);
	return parseInt(date2.getTime() - date1.getTime()) / 1000 / 60 / 60 / 24;
}

/**
 * 计算两个时间之间相差多少小时
 * @param time1,格式:HH分隔符mm分隔符ss,必须参数
 * @param time2,格式:HH分隔符mm分隔符ss,必须参数
 * @param separator 分隔符,可选参数,默认为":"
 * @returns {Number}
 */
function getIntervalHours(time1, time2, separator) {
	return getIntervalSeconds(time1, time2, separator) / 60 / 60;
}

/**
 * 计算两个时间之间相差多少分
 * @param time1,格式为HH分隔符mm分隔符ss,必须参数
 * @param time2,格式为HH分隔符mm分隔符ss,必须参数
 * @param separator 分隔符,可选参数,默认为":"
 * @returns {Number}
 */
function getIntervalMinutes(time1, time2, separator) {
	return getIntervalSeconds(time1, time2, separator) / 60;
}

/**
 * 计算两个时间之间相差多少秒
 * @param time1,格式为HH分隔符mm分隔符ss,必须参数
 * @param time2,格式为HH分隔符mm分隔符ss,必须参数
 * @param separator 分隔符,可选参数,默认为":"
 * @returns {Number}
 */
function getIntervalSeconds(time1, time2, separator) {
	separator = separator ? separator : ":";

	var date1 = new Date();
	date1.setHours(time1.split(separator)[0], time1.split(separator)[1], time1.split(separator)[2]);
	var date2 = new Date();
	date2.setHours(time2.split(separator)[0], time2.split(separator)[1], time2.split(separator)[2]);
	return (date2.getTime() - date1.getTime()) / 1000;
}

/**
 * 获取一个月的天数
 * @param year,四位数字,必须参数
 * @param month,1~12,必须参数
 * @returns {Number}
 */
function getDaysOfMonth(year, month) {
	var arr = [ 31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
	return arr[month - 1];
}

/**
 * 判断是否为闰年
 * @param year,四位数字,必须参数
 * @returns {Boolean}
 */
function isLeapYear(year) {
	if (year % 4 == 0 && (year % 100 != 0 || year % 400 != 0)) {
		return true;
	}
	return false;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值