js日期計算及快速獲取周、月、季度起止日,獲取指定日期週數以及星期幾的小例子

JS獲取日期時遇到以下需求,根據某年某周獲取一週的日期。如開始日期規定爲星期四到下一週的星期五爲一週。spa

格式化日期:code

複製代碼

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; 
}

複製代碼

 

// 獲取日期範圍顯示 orm

複製代碼

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)的日期ci

複製代碼

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方法以下:get

1io

2console

3table

4function

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);

}

相關文章
相關標籤/搜索