最近一个项目需要统计每周的工作情况,需要一个select列表,可以选择填写某个周的工作情况。option列表是根据前面选择的年份月份动态显示的。将选择的月份按周去掉周六日显示周一到周五的日期。设计如下:
<select id="cyear" onchange="showWorkday()">
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
<option value="2021">2021</option>
<option value="2022">2022</option>
</select>
<select id="cmonth" onchange="showWorkday()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<select id="cworkday">
</select>
function showWorkday(){
$("#cworkday").html("");//先将显示周日期的列表清空
var year=document.getElementById('cyear').value;//得到选择的年份
var month=document.getElementById('cmonth').value;//得到月份
var date = new Date();
date.setFullYear(year);
date.setMonth(month-1);//当前月-1
date.setDate(1);
var weeknumber = date.getDay();//该月第一天是星期几
//alert(weeknumber);
var monthday=30;//此月的天数,默认30
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){//每月多少天
monthday=31;
}
if(month==4||month==6||month==9||month==11){
monthday=30;
}
if(month==2){
if((year%4==0&&year%100!=0)||(year%400==0)){
monthday=29;
}
if(!(year%4==0&&year%100!=0)||(year%400==0)){
monthday=28;
}
}
var monthdaybefore=30;//该月上一个月的天数
var monthbefore;//上一个月的月份
var yearbefore=year;//上一个月的年份默认是选择的年份
if(month!=1){//如果选择的不是1月
monthbefore=month-1;//上个月的月份是此月份减1
if(monthbefore==1||monthbefore==3||monthbefore==5||monthbefore==7||monthbefore==8||monthbefore==10||monthbefore==12){//同理得到上个月的月份有多少天 monthdaybefore=31;
}
if(monthbefore==4||monthbefore==6||monthbefore==9||monthbefore==11){
monthdaybefore=30;
}
if(monthbefore==2){
if((year%4==0&&year%100!=0)||(year%400==0)){
monthdaybefore=29;
}
if(!(year%4==0&&year%100!=0)||(year%400==0)){
monthdaybefore=28;
}
}
}else{//如果选择的月是1月
monthbefore=12;//则上一个月是12月
yearbefore=year-1;//上一月的年份是选择的年份减1
if(monthbefore==1||monthbefore==3||monthbefore==5||monthbefore==7||monthbefore==8||monthbefore==10||monthbefore==12){//每月多少天
monthdaybefore=31;
}
if(monthbefore==4||monthbefore==6||monthbefore==9||monthbefore==11){
monthdaybefore=30;
}
if(monthbefore==2){
if(((yearbefore-1)%4==0&&(yearbefore-1)%100!= 0)||((yearbefore-1)%400==0)){//闰年用上一个月的年份做判断
monthdaybefore=29;
}
if(!((yearbefore-1)%4==0&&(yearbefore-1)%100!=0)||((yearbefore-1)%400==0)){
monthdaybefore=28;
}
}
}
//alert(monthday)
//有了此月及上个月的天数年份,及第一天是周几,就可以分情况得到此月的工作周了
if(weeknumber==1){//第一天是周一那选择列表就是1号到5号,8号到13号。。。。i做为日期起的基数,j做为日期止的基数
for(i=1,j=(i+4);i<=monthday&&j<=monthday;i=i+7,j=i+4){//j每次比i大4,i每次循环加一周加7
$("#cworkday").append("<option value='o' >"+year+"-"+month+"-"+i+"~"+year+"-"+month+"-"+j+"</option>");
}//输出格式可以自己改
}
if(weeknumber==2){//第一天是周二则第一周的周一包含了上个月的日期。先输出第一个工作周
$("#cworkday").append("<option value='o' >" +yearbefore+"-"+monthbefore+"-"+monthdaybefore+"~"+year+"-"+month+"-4"+"</option>");
for(i=7,j=(i+4);i<=monthday&&j<=monthday;i=i+7,j=i+4){//相应第二周的周一为7号(手算为7号)再去循环
$("#cworkday").append("<option value='o' >"+year+"-"+month+"-"+i+"~" +year+"-"+month+"-"+j+"</option>");
}
}
if(weeknumber==3){//第一天是周三 同理
$("#cworkday").append("<option value='o' >"+yearbefore+"-"+monthbefore+"-"+(monthdaybefore-1)+"~"+year+"-"+month+"-3"+"</option>");
for(i=6,j=(i+4);i<=monthday&&j<=monthday;i=i+7,j=i+4){
$("#cworkday").append("<option value='o' >"+year+"-"+month+"-"+i+"~" +year+"-"+month+"-"+j+"</option>");
}
}
if(weeknumber==4){//第一天是周四
$("#cworkday").append("<option value='o' >"+yearbefore+"-"+monthbefore+"-"+(monthdaybefore-2)+"~"+year+"-"+month+"-2"+"</option>");
for(i=5,j=(i+4);i<=monthday&&j<=monthday;i=i+7,j=i+4){
$("#cworkday").append("<option value='o' >"+year+"-"+month+"-"+i+"~"+year+"-"+month+"-"+j+"</option>");
}
}
if(weeknumber==5){//第一天是周五
$("#cworkday").append("<option value='o' >"+yearbefore+"-"+monthbefore+"-"+(monthdaybefore-3)+"~"+year+"-"+month+"-1"+"</option>");
for(i=4,j=(i+4);i<=monthday&&j<=monthday;i=i+7,j=i+4){
$("#cworkday").append("<option value='o' >" +year+"-"+month+"-"+i+"~" +year+"-"+month+"-"+j+"</option>");
}
}
if(weeknumber==6){//第一天是周六
for(i=3,j=(i+4);i<=monthday&&j<=monthday;i=i+7,j=i+4){
$("#cworkday").append("<option value='o' >" +year+"-"+month+"-"+i+"~" +year+"-"+month+"-"+j+"</option>");
}
}
if(weeknumber==0){//第一天是周日
for(i=2,j=(i+4);i<=monthday&&j<=monthday;i=i+7,j=i+4){
$("#cworkday").append("<option value='o' >" +year+"-"+month+"-"+i+"~" +year+"-"+month+"-"+j+"</option>");
}
}
}
最终效果如图
Java学习交流群:
2177712
分享到:
相关推荐
jquery动态操作select,按周得到workday工作日的日期段即每月的周一到周五的日期段
//计算15个工作日之后的工作日日期 Date date = workdayUtils.getWorkday(new Date(), 15); //计算两个日期之间的工作日总数 int count = workdayUtils.getWorkdayCount(new Date(), format.parse("2013-08-13"));
不需要编程,纯使用函数解决,求两个日期之间的工作日 1. 解决法定节假日 2. 解决调休等特殊日子 3. 需要每年维护一次“特殊日期”清单,记录每年的特殊节日,也可以自己加特殊日期,比如公司内部统一放假或加班,...
利用Excel WORKDAY函数计算基金赎回入账日期.rar,本例为一份基金购买明细表,利用WORKDAY函数可实现具体入账日期的计算。
中国工作日 今天要上班吗? 安装 $ npm install chinese-workday 用法 // const { isWorkday, isHoliday, getFestival } = require('chinese-workday'); const ww = require ( 'chinese-workday' ) ; const ...
Workday_HCM_Overview.pdf
假期工作日设置假期和工作日,然后得到几周(不... mount HolidayWorkday :: Engine , at : "/holiday_workday"end用法然后转到切换假日和工作日然后,您可以获得包括工作日在内的几周,但不包括假期 HolidayWorkday
WPS excel表格:到期提醒单,【WORKDAY.INTL函数】的功能:计算指定日期之前或者之后几个工作日的日期序列号即Excel中存储的日期。【NETWORKDAYS.INTL函数】:返回两个日期之间的所有工作日数,使用参数指示哪些天是...
WorkDay_Planner 这个工作日计划器是一个简单的网站应用程序,用户可以在其中制作日程安排笔记并将其保存在本地浏览器上。 计划表以正常工作日的上午 9 点至下午 5 点的格式呈现。 随着工作日的时间过去,小时块的...
工作日 工作日程安排 鉴于我正在使用每日计划师来创建时间表 当我打开计划器时 然后,当前日期显示在日历的顶部 当我向下滚动时 然后,我会看到标准营业时间的时间表 当我查看当天的时间段时 然后,每个时间块都用...
Workday导出数据到金碟3的格式转换Workday导出数据到金碟3的格式转换Workday导出数据到金碟3的格式转换Workday导出数据到金碟3的格式转换Workday导出数据到金碟3的格式转换
计算工作日的程序,vs2019开发,国家法定节假日调休日配置在ini文件中,向前计算和向后计算均可以,
工作日使用工作日API的示例代码。
作业分配工作日计划 你的任务 创建一个简单的日历应用程序,该应用程序允许用户通过修改启动程序代码来保存一天中每个小时的事件。 该应用程序将在浏览器中运行,并具有由jQuery支持的动态更新HTML和CSS。 您需要...
2、获取到查询开始日期在工作日的索引 3、计算需查询日期索引 4、获得查询日期 /*创建日期类型记录表格*/ CREATE TABLE `tb_workday` ( `did` int(11) NOT NULL AUTO_INCREMENT, `exact_date` varchar(32) NOT NULL...
任务是建立一个简单的日历应用程序,使用户可以输入和保存工作日每个小时的事件。时间和日期功能是利用Moment.JS库。除了利用Moment.JS之外,该应用程序还具有动态更新HTML和CSS元素的功能。所有应用程序功能都实现...
信息技术行业动态点评:海外SaaS公司跟踪,Workday云服务收入增速符合预期
信息技术行业动态点评:海外SaaS公司跟踪,Workday云服务收入增速符合预期.pdf
my work is this word
工作日程安排通过“工作日计划程序”,您可以根据上午8点至下午5点的工作日时间来设置每日计划者。 根据时间是过去的时间,当前时间还是当天的晚些时候,对小时进行彩色编码。安装单击用法 打开网址查看时间段 :...