JavaScript Date 对象(JavaScript Date 参考手册)
1、字符串转化成日期类型
//+---------------------------------------------------
//| 字符串转成日期类型
//| 格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd
//+---------------------------------------------------
function strToDate(DateStr)
{
var converted = Date.parse(DateStr);
var myDate = new Date(converted);
if (isNaN(myDate))
{
var arys= DateStr.split('-');
myDate = new Date(arys[0], --arys[1], arys[2]);
}
return myDate;
}
2、加减天数/字符串格式转化成Date
- 字符串日期形式加减天数
//加减天数
function dateAddDays(dateStr, dayCount) {
var tempDate = new Date(dateStr.replace(/-/g,"/"));//把日期字符串转换成日期格式
return new Date((tempDate / 1000 + (86400 * dayCount)) * 1000);//增加n天后的日期
}
调用
dateAddDays('2022-01-30 12:00:12', 5);
- Date对象加减天数
var today = new Date();
var monday = new Date(Date.parse(today) - 86400000 * days); // days 需要加减的天数
3、Date对象字符串格式化
// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
调用:
var time1 = new Date().Format("yyyy-MM-dd");
var time2 = new Date().Format("yyyy-MM-dd hh:mm:ss");
4、计算距离下周一还有几个小时
var today = new Date();
var days = (today.getDay() + 6) % 7;
var td = new Date(Date.parse(today) + 86400000 * (7 - days));
var nextMonday = new Date(td.getFullYear(), td.getMonth(), td.getDate());
var hours = parseInt((nextMonday - today) / (1000 * 60 * 60)) + 1;