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

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

轉載地址:https://www.cnblogs.com/laneyfu/p/5028916.html

 //   通過週數和星期計算日期   

//2017年1月1日是星期日,算第一週,1月2日週一算是第二週

   function   dateFromWeek(year,   week,   day){   
			//year       年   
			//week       周   
			//day         星期   (1-7,   7代表週日)   
			var   date1   =   new   Date(year,   0,   1);   
			var   dayMS   =   24*60*60*1000; 
			var 	xq=date1.getDay();
			var result=0
			 if(xq==0){
				if(week!=1){
					 var   weekMS   =   (week-2)*7*dayMS;   
					 result =   date1.getTime()+weekMS+day*dayMS;
				}else{
					result =   date1.getTime()-(7-day)*dayMS;
				}
			}else{
				var   firstDay =  xq*dayMS; 
				var   weekMS   =   (week-1)*7*dayMS;   
				result =   date1.getTime()+weekMS+day*dayMS-firstDay;
			  
			}
			date1.setTime(result);
			return date1;   
		} 

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獲取當前指定的前幾天的日期

 function getBeforeDate(n){
    var n = n;
     var d = new Date();
     var year = d.getFullYear();
     var mon=d.getMonth()+1;
     var day=d.getDate();
    if(day <= n){
            if(mon>1) {
               mon=mon-1;
             }
            else {
              year = year-1;
              mon = 12;
              }
            }
           d.setDate(d.getDate()-n);
           year = d.getFullYear();
           mon=d.getMonth()+1;
          day=d.getDate();
     s = year+"-"+(mon<10?('0'+mon):mon)+"-"+(day<10?('0'+day):day);
      return s;
 }
 console.log(getBeforeDate(1));//昨天的日期
 console.log(getBeforeDate(7));//前七天的日期

不能把1月1號當作第一週的第一天,通常是每年的第一個星期一為第一週的第一天。修改getXDate方法如下

$.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);
}


相關推薦

js日期計算快速獲取季度,獲取指定日期數以星期例子

轉載地址:https://www.cnblogs.com/laneyfu/p/5028916.html //   通過週數和星期計算日期   //2017年1月1日是星期日,算第一週,1月2日週一算是第二週 function dateFromWeek(year,

js獲取當前系統時間的前小時

 **.js $(function(){ }); var oneJsTest={ //以當前系統時間作為結束時間,return不同時間範圍de開始時間 reqShebeiDataByShebeiAndTimeQueryByDifferentTime:func

js計算指定時間所在季度半年全年

//獲取指定日期whereTheTime的所在周、月、季度、半年、全年 //type為1:周,2:月,3:季度,4:半年,5:全年 function computTimeHorizon(whereTheTime,type){ var d = new Date(whereTheTime);

mysql中如何獲取本週是一年中的第??

select year(curdate()),month(curdate()),day(curdate()); select weekofyear(curdate()); 有點細微的差別,weekofyear(date)相當於week(date,3). 下面是week(d

Mysql 日期計算相差年日數整理

1、相差年數 SELECT NOW() 當前日期, DATE_ADD(NOW(), INTERVAL - 400 DAY) 歷史日期, TIMESTAMPDIFF( YEAR, DATE_ADD(NOW(), INTERVAL - 400 DAY

C# 根據當前時間計算季度年的換算注意事項

public static void ShowTime() { /* * 根據當前時間進行時間段轉換: * 本週、下週、上週 *

java-計算任意日期所在年的第一天與最後一天

package com.slk.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.D

獲取選擇的當前天年的時間段

日期格式化 sta ret date fwe 設置 .info || ted /** * Created by Administrator on 2017/5/6. */ /** * options:{"type":2,"date":"2017-5-6","conn

js獲取指定Date的週一周天季度半年

//獲取當前周從星期一到星期天的日期 function getDates(date) { var currentDate = new Date(date); var timesStamp = currentDate.getTime();

Java 處理日期加減運算

1.java 日期加減運算 GregorianCalendar gc = new GregorianCalendar(); //java中對日期的加減操作 gc.add(1,-1);//表示年份減一. gc.add(2,-1);//表示月份減一. gc.add(3,-1);//表示周減一

Java根據傳入Date計算所在季度時間

  package com.rdmu.schedulingmeetingplace.common; import org.hibernate.annotations.SourceType; import java.text.ParseException; import java

C/C++練習題 定義一個日期變數,進行年的輸入,計算日期是本年中的第天。

問題及程式碼:/* *Copyright(c)2016,煙臺大學計算機與控制工程學院 *All right reserved. *檔名稱:main.cpp *作 者:郝昱猛 *完成日期:2016年4月28日 *版 本 號:v1.0 * *問題描述:.定

sql server 中的日期計算,如當天的第一天,當前月的第一天

根據給定的日期,計算該日期在本月所在週數,每週的第一天為週日。但是在月末需要與下個月進行銜接,如 圖2012年2月份,3月份的1、2、3號為2月份的第4周。而2月份的1、2、3、4為1月份的最後一週(第五週)。        declare @datetime varchar(50)   select 

js獲取當前的時間包括年

程式碼如下: <script> function CurentTime() { var now = new Date();

根據指定日期獲取,年的開始和結束時間

/*** 獲取本週的第一天日期和最後一天日期(按中國周)* @param todayTime :"2017-03-15"* @return arr[0] 第一天日期 ;arr[1]最後一天日期* @throws ParseException*/public static S

ORACLE取年的開始時間和結束時間

mil nth spa direction light 4.5 oracl afr oracle  1 取周的開始時間和結束時間 取周的開始時間。以星期一為開始。 SQL>S

Python 按當前日期(年)創建多級目錄的方法

rsquo else 8.4 指定 ont nth pytho 日期 想要 先看實際效果,現在時間2018.4.26 使用python腳本按照年月日生成多級目錄,創建的目錄可以將系統生成的日誌文件放入其中,方便查閱,代碼如下: #!/usr/bin/

練習四:日期計算(輸入某年某某日計算出這一天是該年第天的方法)

nbsp style 內置 練習 day pan and error == 實現輸入某年某月某日計算出這一天是該年第幾天的方法方法一:笨辦法 1 list_day = [0,31,28,31,30,31,30,31,31,30,31,30,31] 2 year

獲取,年的起始和結尾

  訂單查詢需要,所以記錄一下。 /** * @param $zone 周 月 年 按需求更改 * @param int $interval 間隔值 * @param bool $tillnow 是否截止到現在 * @return array

Struts2自定義轉換器輸入生日日期輸出年年齡

  BirthAction.java package com.action; import java.util.Calendar; import java.util.Map; import com.bean.Birth; import com.opensymphony.xwor