function getDay(num){
return '周' + ['一','二','三','四','五','六','日'][num];
}
请注意0~6是对应周一到周日,如果要改变对应关系,请修改‘一’到‘日’的顺序。
//法定节假日和调休日的设定
var Holiday = ["2012-01-01", "2012-01-02", "2012-01-03", "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 = ["2011-12-31", "2012-01-21", "2012-01-29", "2012-03-31", "2012-04-01", "2012-04-28", "2012-09-29"];
function nearlyWeeks (mode, weekcount, end) {
/
功能:计算当前时间(或指定时间),向前推算周数(weekcount),得到结果周的第一天的时期值;
参数:
mode -推算模式('cn'表示国人习惯周一至周日;'en'表示国际习惯周日至周一)
weekcount -表示周数(0-表示本周, 1-前一周,2-前两周,以此推算);
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 = (endgetDay() == 0 7 : endgetDay()) - 1;
else
days = endgetDay();
return new Date(endgetTime() - (days + weekcount 7) 24 60 60 1000);
};
function getWorkDayCount (mode, beginDay, endDay) {
/
功能:计算一段时间内工作的天数。不包括周末和法定节假日,法定调休日为工作日,周末为周六、周日两天;
参数:
mode -推算模式('cn'表示国人习惯周一至周日;'en'表示国际习惯周日至周一)
beginDay -时间段开始日期;
endDay -时间段结束日期;
/
var begin = new Date(beginDaytoDateString());
var end = new Date(endDaytoDateString());
//每天的毫秒总数,用于以下换算
var daytime = 24 60 60 1000;
//两个时间段相隔的总天数
var days = (end - begin) / daytime + 1;
//时间段起始时间所在周的第一天
var beginWeekFirstDay = nearlyWeeks(mode, 0, beginDaygetTime())getTime();
//时间段结束时间所在周的最后天
var endWeekOverDay = nearlyWeeks(mode, 0, endDaygetTime())getTime() + 6 daytime;
//由beginWeekFirstDay和endWeekOverDay换算出,周末的天数
var weekEndCount = ((endWeekOverDay - beginWeekFirstDay) / daytime + 1) / 7 2;
//根据参数mode,调整周末天数的值
if (mode == "cn") {
if (endDaygetDay() > 0 && endDaygetDay() < 6)
weekEndCount -= 2;
else if (endDaygetDay() == 6)
weekEndCount -= 1;
if (beginDaygetDay() == 0) weekEndCount -= 1;
}
else {
if (endDaygetDay() < 6) weekEndCount -= 1;
if (beginDaygetDay() > 0) weekEndCount -= 1;
}
//根据调休设置,调整周末天数(排除调休日)
$each(WLDSettingWeekendsOff, function (i, offitem) {
var itemDay = new Date(offitemsplit('-')[0] + "/" + offitemsplit('-')[1] + "/" + offitemsplit('-')[2]);
//如果调休日在时间段区间内,且为周末时间(周六或周日),周末天数值-1
if (itemDaygetTime() >= begingetTime() && itemDaygetTime() <= endgetTime() && (itemDaygetDay() == 0 || itemDaygetDay() == 6))
weekEndCount -= 1;
});
//根据法定假日设置,计算时间段内周末的天数(包含法定假日)
$each(WLDSettingHoliday, function (i, itemHoliday) {
var itemDay = new Date(itemHolidaysplit('-')[0] + "/" + itemHolidaysplit('-')[1] + "/" + itemHolidaysplit('-')[2]);
//如果法定假日在时间段区间内,且为工作日时间(周一至周五),周末天数值+1
if (itemDaygetTime() >= begingetTime() && itemDaygetTime() <= endgetTime() && itemDaygetDay() > 0 && itemDaygetDay() < 6)
weekEndCount += 1;
});
//工作日 = 总天数 - 周末天数(包含法定假日并排除调休日)
return days - weekEndCount;
};
<%@ page language="java" import="javautil" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 401 Transitional//EN"
" >
//起始日期也在计算范围内
function getRestDays(bd,ed)
{
var d1=new Date(bd),d2=new Date(ed);
var dateSpan=d2-d1;
var days=parseInt(dateSpan/(2436001000))+1;//计算两个日期间的天数差,加1是为了把起始日期计算在内
var weeks=parseInt(days/7,10);
var result=weeks2;
if(days%7>0)
{
var leftdays=days%7;
var week1=d1getDay(); //周日=0,周一=1,依次。。
if(week1==0)//如果第一个日期从周日开始,剩余天数不足一周(7天)
{
result +=1;
}
else if(week1+leftdays>7)//如果第一个日期从周一到周六,加上剩余天数大于7,表示包含周六和周日,所以有两天
{
result +=2;
}
else if(week1+leftdays==7)//如果刚好到周六,有一天休息日
{
result +=1;
}
}
return result;
}
执行结果可以自测,调用如下:
把需要设定的日期,用变量存储(年、月、日),之后,月份加1
再之后用new Date()方法,设定当前日期为指定日期的后一个月
最后还是用Date对象中的方法,打印出星期,进行数值判断即可
知识点,了解Date对象里的设置与获取方法即可
以上就是关于用javascript 定义一个函数,实现将得到的整数0~6,转换成周一~周日输出全部的内容,包括:用javascript 定义一个函数,实现将得到的整数0~6,转换成周一~周日输出、js 判断一段时间里有几个工作日、js 怎么计算上一周下一周等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)