<span style="font-size:12px;"> // 判断日期是不是周末
function checkWeekend() {
var startDate = $("input[name=begin_time]").val();
var endDate = $("input[name=end_time]").val();
var weekDays = 0;// 开始日期和结束日期之间相隔的周末天数
var count = 0;// 循环次数
if(startDate <= endDate) {// 开始日期必须小于结束日期,防止死循环
var nextDate = startDate;
while(nextDate != endDate) {
nextDate = getNextDate(nextDate,1);
// 判断nextDate是否是周末,如果是周末则减去
var day = new Date(nextDate).getDay();//0-周日,6-周六
if(day==0 || day==6) {
weekDays ++;
}
count ++;
if(count>=180) {// 防止死循环
break;
}
}
}
var day = $("input[name=day]").val();
$("input[name=day]").val(day-weekDays);// 减去周末时间
}</span>
<span style="font-size:12px;"> // 字符转日期
getDate : function(strDate) {
var date = eval('new Date(' + strDate.replace(/\d+(?=-[^-]+$)/,
function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')');
return date;
},
// 取得下一个工作日
getNextWorkDay: function(dateStr){
var _this = this;
function getNextDay(d){
d = new Date(d);
d = +d + 1000*60*60*24;
d = new Date(d);
//return d;
//格式化
var year = d.getFullYear();
var month = d.getMonth()+1;
month = month < 10?'0'+month:month;
var date = d.getDate() < 10?'0'+d.getDate():d.getDate();
return year+"-"+month+"-"+date;
}
var nextDay = getNextDay(dateStr);
if(!_this.checkWeekDay(nextDay)){
nextDay = _this.getNextWorkDay(nextDay);
}
return nextDay;
},
// 判断是否周末
checkWeekDay: function(dateStr){
var d = this.getDate(dateStr);
if(d.getDay() == 6 || d.getDay() == 0){
return false;
}else{
return true;
}
},
// 取得两天之间的工作日(除周末)
getWorkDay: function(mode, beginDay, endDay) {
var d1 = this.getDate(beginDay);
var d2 = this.getDate(endDay);
var dateS = this.getDate(beginDay)
var dateE = this.getDate(endDay);
var day = (dateE.getTime() - dateS.getTime()) / (1000 * 60 * 60 * 24);
var w1 = dateS.getDay();
var w2 = dateE.getDay();
var w = parseInt(day / 7) * 2;
w += w1 > w2 ? 2 : w1 == 0 ? 1 : 0;
return day - w + 1;
// //计算工作日
// var Holiday = ["2015-07-13", "2015-07-14", "2015-07-15", "2012-01-22", "2012-01-23", "2012-01-24", "2012-01-25", "2012-01-26", "2012-01-27", "2012-01-28", "2012-04-02", "2012-04-03", "2012-04-04", "2012-04-29", "2012-04-30", "2012-05-01", "2012-06-22", "2012-06-23", "2012-06-24", "2012-09-30", "2012-10-01", "2012-10-02", "2012-10-03", "2012-10-04", "2012-10-05", "2012-10-06", "2012-10-07"];
// var WeekendsOff = ["2015-07-11", "2012-01-21", "2012-01-29", "2012-03-31", "2012-04-01", "2012-04-28", "2012-09-29"];
//
// function nearlyWeeks(mode, weekcount, end) {
// if (mode == undefined) {
// mode = "cn"
// }
// if (weekcount == undefined) {
// weekcount = 0
// }
// if (end != undefined) {
// end = new Date(new Date(end).toDateString())
// } else {
// end = new Date(new Date().toDateString())
// }
// var days = 0;
// if (mode == "cn") {
// days = (end.getDay() == 0 ? 7 : end.getDay()) - 1
// } else {
// days = end.getDay()
// }
// return new Date(end.getTime() - (days + weekcount * 7) * 24 * 60 * 60 * 1000)
// }
//
// function getWorkDayCount(mode, beginDay, endDay) {
// var begin = new Date(beginDay.toDateString());
// var end = new Date(endDay.toDateString());
// var daytime = 24 * 60 * 60 * 1000;
// var days = (end - begin) / daytime + 1;
// var beginWeekFirstDay = nearlyWeeks(mode, 0, beginDay.getTime()).getTime();
// var endWeekOverDay = nearlyWeeks(mode, 0, endDay.getTime()).getTime() + 6 * daytime;
// var weekEndCount = ((endWeekOverDay - beginWeekFirstDay) / daytime + 1) / 7 * 2;
// if (mode == "cn") {
// if (endDay.getDay() > 0 && endDay.getDay() < 6) {
// weekEndCount -= 2
// } else {
// if (endDay.getDay() == 6) {
// weekEndCount -= 1
// }
// }
// if (beginDay.getDay() == 0) {
// weekEndCount -= 1
// }
// } else {
// if (endDay.getDay() < 6) {
// weekEndCount -= 1
// }
// if (beginDay.getDay() > 0) {
// weekEndCount -= 1
// }
// }
// $.each(WeekendsOff, function(i, offitem) {
// var itemDay = new Date(offitem.split("-")[0] + "/" + offitem.split("-")[1] + "/" + offitem.split("-")[2]);
// if (itemDay.getTime() >= begin.getTime() && itemDay.getTime() <= end.getTime() && (itemDay.getDay() == 0 || itemDay.getDay() == 6)) {
// weekEndCount -= 1
// }
// });
// $.each(Holiday, function(i, itemHoliday) {
// var itemDay = new Date(itemHoliday.split("-")[0] + "/" + itemHoliday.split("-")[1] + "/" + itemHoliday.split("-")[2]);
// if (itemDay.getTime() >= begin.getTime() && itemDay.getTime() <= end.getTime() && itemDay.getDay() > 0 && itemDay.getDay() < 6) {
// weekEndCount += 1
// }
// });
// return days - weekEndCount
// }
//
// function getDate(strDate) {
// var date = eval("new Date(" + strDate.replace(/\d+(?=-[^-]+$)/, function(a) {
// return parseInt(a, 10) - 1
// }).match(/\d+/g) + ")");
// return date
// }
// var r = getWorkDayCount("cn", getDate(beginDay), getDate(endDay));
// return r == undefined ? 0 : r;
}</span>
// 获取日期:昨天今天和明天、后天
<span style="font-size:12px;"><body>
<script language="JavaScript" type="text/javascript">
function GetDateStr(AddDayCount) {
var dd = new Date();
dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期
var y = dd.getFullYear();
var m = dd.getMonth()+1;//获取当前月份的日期
var d = dd.getDate();
return y+"-"+m+"-"+d;
}
document.write("前天:"+GetDateStr(-2));
document.write("<br />昨天:"+GetDateStr(-1));
document.write("<br />今天:"+GetDateStr(0));
document.write("<br />明天:"+GetDateStr(1));
document.write("<br />后天:"+GetDateStr(2));
document.write("<br />大后天:"+GetDateStr(3));
</script>
</body> </span>
其中有一种方法是:Date.parse(dateVal),此函数功能强大,但是有个致命的缺点,那就是不支持我们常用的“年-月-日”格式,短日期可以使用“/”或“-”作为日期分隔符,但是必须用月/日/年的格式来表示,例如"7/20/96"。
另一种方法是使用 split,比如:
var dtStr = "2006-11-25";
var dtArr = dtStr.split("-");
var dt = new Date(dtArr[0], dtArr[1], dtArr[2]);
但这种方法较为死板,要求固定的日期格式,只有在没有办法的情况下才用。
如果我们可以将年月日拆分开,就尽量将其拆开,比如 ASP 分别输出年月日。然后用 new Date 来处理,返回的便是日期类型。
日期格式化
<script language="javascript" type="text/javascript"><!--
/**
* 对Date的扩展,将 Date 转化为指定格式的String
* 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符
* 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
* eg:
* (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
* (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04
* (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04
* (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04
* (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
*/
Date.prototype.pattern=function(fmt) {
var o = {
"M+" : this.getMonth()+1, //月份
"d+" : this.getDate(), //日
"h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时
"H+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth()+3)/3), //季度
"S" : this.getMilliseconds() //毫秒
};
var week = {
"0" : "\u65e5",
"1" : "\u4e00",
"2" : "\u4e8c",
"3" : "\u4e09",
"4" : "\u56db",
"5" : "\u4e94",
"6" : "\u516d"
};
if(/(y+)/.test(fmt)){
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
}
if(/(E+)/.test(fmt)){
fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "\u661f\u671f" : "\u5468") : "")+week[this.getDay()+""]);
}
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 date = new Date();
window.alert(date.pattern("yyyy-MM-dd hh:mm:ss"));
// --></script>
<span style="font-size:12px;">
</span>
<span style="font-size:12px;">// js获取当前日期、前一天、后一天的日期的例子
</span>
<span style="font-size:12px;">< script >
function addByTransDate(dateParameter, num) {
var translateDate = "",
dateString = "",
monthString = "",
dayString = "";
translateDate = dateParameter.replace("-", "/").replace("-", "/");
var newDate = new Date(translateDate);
newDate = newDate.valueOf();
newDate = newDate + num * 24 * 60 * 60 * 1000;
newDate = new Date(newDate);
//如果月份长度少于2,则前加 0 补位
if ((newDate.getMonth() + 1).toString().length == 1) {
monthString = 0 + "" + (newDate.getMonth() + 1).toString();
} else {
monthString = (newDate.getMonth() + 1).toString();
}
//如果天数长度少于2,则前加 0 补位
if (newDate.getDate().toString().length == 1) {
dayString = 0 + "" + newDate.getDate().toString();
} else {
dayString = newDate.getDate().toString();
}
dateString = newDate.getFullYear() + "-" + monthString + "-" + dayString;
return dateString;
}
function reduceByTransDate(dateParameter, num) {
var translateDate = "",
dateString = "",
monthString = "",
dayString = "";
translateDate = dateParameter.replace("-", "/").replace("-", "/");
var newDate = new Date(translateDate);
newDate = newDate.valueOf();
newDate = newDate - num * 24 * 60 * 60 * 1000;
newDate = new Date(newDate);
//如果月份长度少于2,则前加 0 补位
if ((newDate.getMonth() + 1).toString().length == 1) {
monthString = 0 + "" + (newDate.getMonth() + 1).toString();
} else {
monthString = (newDate.getMonth() + 1).toString();
}
//如果天数长度少于2,则前加 0 补位
if (newDate.getDate().toString().length == 1) {
dayString = 0 + "" + newDate.getDate().toString();
} else {
dayString = newDate.getDate().toString();
}
dateString = newDate.getFullYear() + "-" + monthString + "-" + dayString;
return dateString;
}
//得到日期 主方法
function showTime(pdVal) {
var trans_day = "";
var cur_date = new Date();
var cur_year = new Date().format("yyyy");
var cur_month = cur_date.getMonth() + 1;
var real_date = cur_date.getDate();
cur_month = cur_month > 9 ? cur_month : ("0" + cur_month);
real_date = real_date > 9 ? real_date : ("0" + real_date);
eT = cur_year + "-" + cur_month + "-" + real_date;
if (pdVal == 1) {
trans_day = addByTransDate(eT, 1);
} else if (pdVal == -1) {
trans_day = reduceByTransDate(eT, 1);
} else {
trans_day = eT;
}
//处理
return trans_day;
}</span>
function getYestoday(date){
var yesterday_milliseconds=date.getTime()-1000*60*60*24;
var yesterday = new Date();
yesterday.setTime(yesterday_milliseconds);
var strYear = yesterday.getFullYear();
var strDay = yesterday.getDate();
var strMonth = yesterday.getMonth()+1;
if(strMonth<10)
{
strMonth="0"+strMonth;
}
datastr = strYear+"-"+strMonth+"-"+strDay;
return datastr;
}
//获得上个月在昨天这一天的日期
function getLastMonthYestdy(date){
var daysInMonth = new Array([0],[31],[28],[31],[30],[31],[30],[31],[31],[30],[31],[30],[31]);
var strYear = date.getFullYear();
var strDay = date.getDate();
var strMonth = date.getMonth()+1;
if(strYear%4 == 0 && strYear%100 != 0){
daysInMonth[2] = 29;
}
if(strMonth - 1 == 0)
{
strYear -= 1;
strMonth = 12;
}
else
{
strMonth -= 1;
}
strDay = daysInMonth[strMonth] >= strDay ? strDay : daysInMonth[strMonth];
if(strMonth<10)
{
strMonth="0"+strMonth;
}
if(strDay<10)
{
strDay="0"+strDay;
}
datastr = strYear+"-"+strMonth+"-"+strDay;
return datastr;
}
//获得上一年在昨天这一天的日期
function getLastYearYestdy(date){
var strYear = date.getFullYear() - 1;
var strDay = date.getDate();
var strMonth = date.getMonth()+1;
if(strMonth<10)
{
strMonth="0"+strMonth;
}
if(strDay<10)
{
strDay="0"+strDay;
}
datastr = strYear+"-"+strMonth+"-"+strDay;
return datastr;
}