今天遇到了个问题:根据用户输入动态计算输入日期为第几周。
当然我写的前端肯定不是最好的,至少已经解决了这个问题。
代码如下:
function weeksCalculation(startDay) { /*yyyy-MM-dd格式*/
var endDay = $("#rq").val(); /*用户输入框输入的日期*/
var weeks;
var sday = new Date(startDay);
var eday = new Date(endDay);
var date3 = eday.getTime() - sday.getTime();
var days = Math.floor(date3 / (24 * 3600 * 1000));
/*第一天的周判断第一周剩余天数*/
var week = sday.getDay();
var differDay;
if (week == 0) {
differDay = 0;
} else {
differDay = 7 - week;
}
/*计算除了入院第一周外还有几天*/
days -= differDay;
if (days <= 0) {
/*如果是第一周*/
return $('#weeks').val(1);
} else {
/*第一周以外的周数*/
if (days % 7 == 0) {
weeks = days / 7 + 1;
} else {
weeks = Math.trunc(days / 7) + 2;
}
return $('#weeks').val(weeks);
}
}
我使用了onchange事件触发了这段方法,
这段方法的特点有:1、第一周不管是周几都会算一周。
2、开始日期是固定日期但是结束日期是动态的,当然这两个变量也可以根据自己的需求修改开始日期的获取。
不喜勿喷,谢谢!