VUE 通用時間格式

轉載自:https://www.cnblogs.com/wasabii/p/7756560.html

 

 

js獲取本週、本月、本季、本年的第一天

今天項目中要獲取本週、本月、本季、本年的第一天,發現網上的方法或多或少都有問題,於是自己寫了一個,親測可用。

同時回顧了一下js日期對象的知識,做個總結

 

先上代碼:

複製代碼

 1 /**
 2  * 獲取指定日期的周的第一天、月的第一天、季的第一天、年的第一天
 3  * @param date new Date()形式,或是自定義參數的new Date()
 4  * @returns 返回值爲格式化的日期,yy-mm-dd
 5  */
 6 //日期格式化,返回值形式爲yy-mm-dd
 7 function timeFormat(date) {
 8     if (!date || typeof(date) === "string") {
 9         this.error("參數異常,請檢查...");
10     }
11     var y = date.getFullYear(); //年
12     var m = date.getMonth() + 1; //月
13     var d = date.getDate(); //日
14 
15     return y + "-" + m + "-" + d;
16 }
17 
18 //獲取這周的週一
19 function getFirstDayOfWeek (date) {
20 
21     var weekday = date.getDay()||7; //獲取星期幾,getDay()返回值是 0(週日) 到 6(週六) 之間的一個整數。0||7爲7,即weekday的值爲1-7
22 
23     date.setDate(date.getDate()-weekday+1);//往前算(weekday-1)天,年份、月份會自動變化
24     return timeFormat(date);
25 }
26 
27 //獲取當月第一天
28 function getFirstDayOfMonth (date) {
29     date.setDate(1);
30     return timeFormat(date);
31 }
32 
33 //獲取當季第一天
34 function getFirstDayOfSeason (date) {
35     var month = date.getMonth();
36     if(month <3 ){
37         date.setMonth(0);
38     }else if(2 < month && month < 6){
39         date.setMonth(3);
40     }else if(5 < month && month < 9){
41         date.setMonth(6);
42     }else if(8 < month && month < 11){
43         date.setMonth(9);
44     }
45     date.setDate(1);
46     return timeFormat(date);
47 }
48 
49 //獲取當年第一天
50 function getFirstDayOfYear (date) {
51     date.setDate(1);
52     date.setMonth(0);
53     return timeFormat(date);
54 }

複製代碼

 

getYear()返回年份與1900 年之間的差,如1994年返回94,而2009年則會顯示109

getFullYear()返回正確的年份,如2017

 

getDay() 方法可返回表示星期的某一天的數字。返回值是 0(週日) 到 6(週六) 之間的一個整數。

這裏date.getDay()||7將返回值變成了1-7(對應週一到週日)。

 

getMonth()的返回值比實際月份少1。即0-11表示1月到 12月。我們在打印出來的時候需要getMonth()+1 纔會看到正確的月份

同理setMonth(0)表示1月份

 

setDate() 方法用於設置一個月的某一天。

對於某個日期上加減天數來說,調用setDate()函數就可以了

date.setDate(date.getDate()-n);//前n天的日期

如果前n天的日期是上個月或是去年了,setDate()也會自動設置,會自動改變月份、年份,不需要人工判斷

 

函數輸入參數date爲new Date()形式

var date=new Date();

Date 對象自動使用當前的日期和時間作爲其初始值。

 

也可以自定義時間,參數形式有5種: 

1)new Date("month dd,yyyy hh:mm:ss");

2)new Date("month dd,yyyy"); 

3)new Date(yyyy,mth,dd,hh,mm,ss); 

4)new Date(yyyy,mth,dd); 

5)new Date(ms); 

具體使用如下:

複製代碼

1 new Date("January 12,2006 22:19:35"); 
2  
3 new Date("January 12,2006"); 
4  
5 new Date(2006,0,12,22,19,35); 
6  
7 new Date(2006,0,12); 
8  
9 new Date(1137075575000);

複製代碼

 

getFirstDayOfWeek、getFirstDayOfMonth等這幾個函數在使用時要注意,一起使用的時候不能

複製代碼

1 var date = new Date(2017,0,1,22,22,22);
2        
3 console.log("當前日期:",date);
4 console.log("當前日期格式化:",timeFormat(date));
5 console.log("本週第一天:",getFirstDayOfWeek(date));
6 console.log("本月第一天:",getFirstDayOfMonth(date));
7 console.log("本季第一天:",getFirstDayOfSeason(date));
8 console.log("本年第一天:",getFirstDayOfYear(date));

複製代碼

這樣使用,因爲 getFirstDayOfWeek(date) 函數直接是setDate的,這個date值已經發生了變化了,後面幾個函數使用時已經不是最開始定義的date了,與我們的預期不符~(一開始就栽在這裏了,明明感覺函數都對,輸出值就是與預期不一樣)

 

要一起使用時最好每個參數都new Date()一下,以2017.1.1爲例:

1 console.log("當前日期:",new Date(2017,0,1));
2 console.log("當前日期格式化:",timeFormat(new Date(2017,0,1)));
3 console.log("本週第一天:",getFirstDayOfWeek(new Date(2017,0,1)));
4 console.log("本月第一天:",getFirstDayOfMonth(new Date(2017,0,1)));
5 console.log("本季第一天:",getFirstDayOfSeason(new Date(2017,0,1)));
6 console.log("本年第一天:",getFirstDayOfYear(new Date(2017,0,1)));
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章