<span style="color:#000000;">year = parseInt(year);
month = parseInt(month);
day = parseInt(day);
var days = 0; //表示该日期为当年的第几天
//根据月累加天数 计算当前日期为年的第几天
for(var i = 1; i < month; i++ ){
switch(i){
//大月的情况加31
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:{
days += 31;
break;
//小月的情况加30
case 4:
case 6:
case 9:
case 11:{
days += 30;
break;
//二月的情况,闰年+29 平年28
case 2:{
if((year%4==0 && year%100!=0)||(year%100==0 && year%400==0)){
days += 29; //闰年加29
else {
days += 28;
break;
day = day * 1;
days += day;
var date0 = new Date(year,0,1); //当年的第一当年
var oneDayWeek = date0.getDay()==0?7:date0.getDay();//当年的第一天是周几
//每年第一个周按1月1号所在周计算 计算第一个周有几天
var oneWeekDay = 7-oneDayWeek+1;
//除去第一周省下的天数;
var shengdays = days - oneWeekDay;
var nthOfWeek = Math.ceil(shengdays/7)+1; //向上取整
if(nthOfWeek>53){//最大按照53算 2012 31 有54 也是按照最后一个周计算
nthOfWeek = 53;
return nthOfWeek;</span>
js当前日期 向前推N周所在周一和周日
//向前推N周 返回结果数组 0:当前周所在日期(type:0 周的第一天 type1周的最后一天) 索引2:所在第几周
function getWeekBefore(num,type){
var returnArray = [];
var c_date = curDateTime();//当前日期
// var c_date = "2014-01-08";//当前日期
var dateArr = c_date.split("-");//拿到当前的 年、月
//当前日期所在周
var c_week = getWeekNumberByDate(dateArr[0],dateArr[1],dateArr[2]);
var date11 = new Date(dateArr[0],parseInt(dateArr[1])-1,dateArr[2]);
//当前日期所在周几?
var c_DayWeek = date11.getDay()==0?7:date11.getDay();//当前日期所在周几
var year = parseInt(dateArr[0]);
//当前1月1号所在周的天数和周几
var date0 = new Date(year,0,1); //当年的第一天年
var oneDayWeek = date0.getDay()==0?7:date0.getDay();//当年的第一天是周几
var oneWeekDay = 7-oneDayWeek+1; //当年第一周所在的天数
//去年最后一周所在的天数
var quyear = year-1;
var date1 = new Date(quyear,11,31); //去年的最后一天
var quDayWeek = date1.getDay()==0?7:date1.getDay();//去年的最后一天的所在周几
var quweek = getWeekNumberByDate(quyear,12,31);
//确定推N周所在的周数 判断是否存在跨年
var chaw = c_week - num;
//第一种情况 不跨年、不是第一周
if(chaw>1){
//计算推的天数
var chday = c_DayWeek+(num-1)*7;
returnArray[0]= getDayBefore(c_date,chday);
}else if(chaw==1){//推到今年第一周
returnArray[0] = year+"-01-01";
}else if(chaw==0){//去年最后一周
var quyear = year-1;
returnArray[0] = quyear+"-12-31";
}else if(chaw<0){//跨年了
//先把今年推到头 第一周+本周+周-2*7
var chday = 0;
if(c_week!=1){
chday = c_DayWeek+(num-2)*7+oneWeekDay; //按照这个日期推 可以推到去年最后一天
}else{
chday = parseInt(dateArr[2]); //按照这个日期推 可以推到去年最后一天
//应该推到去年的所在周 去年最后一周的天数 再往前N-1周
var chweekday = quDayWeek + (0-chaw-1)*7+chday;
returnArray[0]= getDayBefore(c_date,chweekday);
//需要返回的时间
var returnDate = returnArray[0];
var reArr0 = returnDate.split("-");//拿到当前的 年、月
//本周第一天
if(type==0){
//是否是第一个月
if(chaw==1){
returnArray[0] = reArr0[0]+"-01-01";
}else if(chaw==0){//是否是最后一个月
//去年最后一周的周几
var dayend = 31-parseInt(quDayWeek)+1;
returnArray[0] = reArr0[0]+"-12-"+dayend;
}else{//平常心
var dayend = parseInt(reArr0[2])-6;
dayend = dayend<10?"0"+dayend:dayend;
returnArray[0] = reArr0[0]+"-"+reArr0[1]+"-"+dayend;
}else if(type==1){
if(chaw==1){
var dayend = parseInt(oneWeekDay)<10?"0"+oneWeekDay:oneWeekDay;
returnArray[0] = reArr0[0]+"-01-"+dayend;
var reArr1 = returnArray[0].split("-");
//拿到所在周
returnArray[1] = getWeekNumberByDate(reArr1[0],reArr1[1],reArr1[2]);
return returnArray;
计算当前时间转化为周数(满周为52周像element-Ui和ant-design的周数选择组件都是这样的规定):
获取的周数格式为:"2020 第34周"
getYearWeek(date){
// date = formatTimebytype(date, 'yyyy-MM-dd');//将日期转换成yyyy-mm-dd格式
date = new Date(date);
let date2 = new Date(date.getFullYear(), 0, 1);
let day1 = date.
1.必须以字母、下划线或美元符号开头,后面可以跟字母、下划线、美元符号和数字。
2.变量名区分大小写,如:A与a是两个不同变量。
3.不允许使用JavaScript关键字和保留字做变量名。
声明变量语法: var 变量名; Var还可以一次声明多个变量,变量之间用","逗号隔开。
使用"="号给变量存
项目中有一个需求:需要根据学期时间动态的计算出该学期有多少周
通过上网查找,找到了一个工具类moment.js
moment.js是一个JavaScript日期处理类库,能够实现对日期的便捷操作
官网地址:Moment.js
环境: 需要有Node环境支持
首先需要安装moment工具包
npm install moment
然后引入刚才下载的工具包
import moment from "moment"
因为使用的地方比较少,所以是在使用的.vue文件中引入的,如果整个项目使用比较多,可以在main
偏移量(offset dimension)
偏移量:包括元素在屏幕上占用的所有可见空间,元素的可见大小由其高度,宽度决定,包括所有内边距,滚动条和边框大小(注意,不包括外边距)。
以下4个属性可以获取元素的偏移量
offsetHeight:元素在垂直方向上占用的空间大小,以像素计。包括元素的高度(可见的),水平滚动条的高度,上边框高度和下边框高度。
offsetWidth:元素在水平方向上占用的空间大小,以像素计。包括元素的宽度(可见的),垂直滚动条的宽度,左边框宽度和右边框宽度。
3: off
let currYear = date.getFullYear();
let currMonth = date.getMonth();
let currWeekDay = date.getDate();
let currDate = date.getDay();
let weekStartDate = new Date(
currY
const date = new Date()
for(var i=0;i<7;i++){
let newDate=new Date(date.getTime()+i*1000*60*60*24)
let year=newDate.getFullYear()
let month=(parseInt(newDate.getMonth())+1)>9?(parseInt(newDate.getMonth())+1):"0"+(parseIn
1、每年的第一个周一到周日算作一周,以此类推
2、第一个周一之前的一周大于等于4天算作当前年的第一周,否则算做去年的最后一周,第一个周一到周日将会作为第二周开始计数,并且当前年无第一周
3、每年的最后一整周后的一周如果大于等于4天算做第最后一周,否则不算周
let weeks = [];
for (let i = 1970; i <= 2060; i++) {
let year = i;
let date = new Date(`${year}-1-1`);