博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js日期计算及快速获取周、月、季度起止日,获取指定日期周数以及星期几的小例子...
阅读量:6573 次
发布时间:2019-06-24

本文共 2919 字,大约阅读时间需要 9 分钟。

hot3.png

JS获取日期时遇到如下需求,根据某年某周获取一周的日期。如开始日期规定为星期四到下一周的星期五为一周。

格式化日期:

复制代码

function getNowFormatDate(theDate) { var day = theDate; var Year = 0; var Month = 0; var Day = 0; var CurrentDate = ""; // 初始化时间 Year= day.getFullYear();// ie火狐下都可以 Month= day.getMonth()+1; Day = day.getDate(); CurrentDate += Year + "-"; if (Month >= 10 ) { CurrentDate += Month + "-"; } else{ CurrentDate += "0" + Month + "-"; } if (Day >= 10 ) { CurrentDate += Day ; } else{ CurrentDate += "0" + Day ; } return CurrentDate; }

复制代码

 

// 获取日期范围显示 

复制代码

function getDateRange(_year,_week){ var beginDate; var endDate; if(_year == null || _year == '' || _week == null || _week == ''){ return ""; } beginDate = getXDate(_year,_week,4); endDate = getXDate(_year,(_week - 0 + 1),5); return getNowFormatDate(beginDate) + " 至 "+ getNowFormatDate(endDate); }

复制代码

// 这个方法将取得某年(year)第几周(weeks)的星期几(weekDay)的日期 

复制代码

function getXDate(year,weeks,weekDay){ // 用指定的年构造一个日期对象,并将日期设置成这个年的1月1日 // 因为计算机中的月份是从0开始的,所以有如下的构造方法 var date = new Date(year,"0","1");  // 取得这个日期对象 date 的长整形时间 time var time = date.getTime();  // 将这个长整形时间加上第N周的时间偏移 // 因为第一周就是当前周,所以有:weeks-1,以此类推 // 7*24*3600000 是一星期的时间毫秒数,(JS中的日期精确到毫秒) time+=(weeks-1)*7*24*3600000;  // 为日期对象 date 重新设置成时间 time date.setTime(time); return getNextDate(date,weekDay); }

复制代码

// 这个方法将取得 某日期(nowDate) 所在周的星期几(weekDay)的日期

复制代码

function getNextDate(nowDate,weekDay){ // 0是星期日,1是星期一,... weekDay%=7; var day = nowDate.getDay(); var time = nowDate.getTime(); var sub = weekDay-day; if(sub <= 0){ sub += 7; } time+=sub*24*3600000; nowDate.setTime(time); return nowDate; }

复制代码

 

js获取当前指定的前几天的日期

复制代码

1 function getBeforeDate(n){ 2     var n = n; 3     var d = new Date(); 4     var year = d.getFullYear(); 5     var mon=d.getMonth()+1; 6     var day=d.getDate(); 7     if(day <= n){ 8             if(mon>1) { 9                mon=mon-1;10             }11            else {12              year = year-1;13              mon = 12;14              }15            }16           d.setDate(d.getDate()-n);17           year = d.getFullYear();18           mon=d.getMonth()+1;19           day=d.getDate();20      s = year+"-"+(mon<10?('0'+mon):mon)+"-"+(day<10?('0'+day):day);21      return s;22 }23 console.log(getBeforeDate(1));//昨天的日期24 console.log(getBeforeDate(7));//前七天的日期

复制代码

但是不能把1月1号当作第一周的第一天,通常是每年的第一个星期一为第一周的第一天。修改getXDate方法如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

$.getXDate = function (year, weeks, weekDay) {

    // 用指定的年构造一个日期对象,并将日期设置成这个年的1月1日

    // 因为计算机中的月份是从0开始的,所以有如下的构造方法

    //每年第一周从第一个星期一开始

    var date = new Date(year, "0""1");

    var firstday = date.getDay()

    if (firstday > 1)

        date = new Date(date.valueOf() + (8 - firstday) * 24 * 60 * 60 * 1000);

    // 取得这个日期对象 date 的长整形时间 time

    var time = date.getTime();

    // 将这个长整形时间加上第N周的时间偏移

    // 因为第一周就是当前周,所以有:weeks-1,以此类推

    // 7*24*3600000 是一星期的时间毫秒数,(JS中的日期精确到毫秒)

    time += (weeks - 1) * 7 * 24 * 3600000;

    // 为日期对象 date 重新设置成时间 time

    date.setTime(time);

    return $.getNextDate(date, weekDay);

}

转载于:https://my.oschina.net/youfen/blog/1921069

你可能感兴趣的文章
无连续重复的随机算法
查看>>
活动目录拓展详解
查看>>
分别求出数组的行和列的和
查看>>
如何使VNC和Linux tty7 显示同步效果
查看>>
Qt学习之路(60): 创建shared library
查看>>
Linux系统优化
查看>>
md5加密与解密
查看>>
nginx日志问题解决方法记录
查看>>
性能测试与故障诊断
查看>>
cisco路由器基本实验之六 CHAP and RIP (Boson NetSim)
查看>>
性能测试之:loadrunner 报lr_load_dll 失败 CCI trace: vuser_init.c(6): ci_load_dll查证及解决过程...
查看>>
oraccle 索引管理
查看>>
【Python之旅】第四篇(四):基于面向对象的模拟人生游戏类
查看>>
以身试法MTU
查看>>
基于CentOS7.3构建企业级Vsftpd文件服务器
查看>>
使用ApexSQL Log 分析数据库在线日志及数据库备份
查看>>
技术分享连载(八十六)
查看>>
清除vlan.dat文件
查看>>
Android 面试常问七道题
查看>>
TestNG介绍 - 1
查看>>