zoukankan      html  css  js  c++  java
  • js日期计算及快速获取周、月、季度起止日,获取指定日期周数以及星期几的小例子

    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));//前七天的日期
  • 相关阅读:
    7.Perfect Number
    6.Hamming Distance
    5.Palindrome Number
    4.String to Integer (atoi)
    3.Reverse Integer
    [HP SIM] Systems Insight Manager stopped working, sqlserver error code 0x80090302。
    [HP SIM] Systems Insight Manager 不能正常工作,数据库错误0x80090302。
    [Outlook] 用powershell做outlook中的delegate.
    [Outlook] Use powershell to do delegates like outlook.
    [Outlook] profile在注册表里的秘密。
  • 原文地址:https://www.cnblogs.com/laneyfu/p/5028916.html
Copyright © 2011-2022 走看看