天天看點

js時間戳轉換日期格式和日期計算

一、時間戳轉換日期

1 function formatDate(datetime) {
 2         // 擷取年月日時分秒值  slice(-2)過濾掉大于10日期前面的0
 3         var year = datetime.getFullYear(),
 4             month = ("0" + (datetime.getMonth() + 1)).slice(-2),
 5             date = ("0" + datetime.getDate()).slice(-2),
 6             hour = ("0" + datetime.getHours()).slice(-2),
 7             minute = ("0" + datetime.getMinutes()).slice(-2),
 8             second = ("0" + datetime.getSeconds()).slice(-2);
 9         // 拼接
10         var result = year + "-"+ month +"-"+ date +" "+ hour +":"+ minute +":" + second;
11         // 傳回
12         return result;
13     }
14 
15     var date = new Date();
16     console.log(formatDate(date)); // 2018-05-26 23:09:26      

二、合同日期計算

根據開始日期和期限,計算結束日期

1 //date: 日期字元串yyyy-MM-dd,如:2016-02-14
 2 //years:年份,正整數字元串
 3 //傳回日期字元串yyyy-MM-dd,如:2016-02-14
 4     function dateAddYear(date, years) {
 5         var now = new Date(date);
 6         var intYear = now.getFullYear() + parseInt(years);
 7         var intMonth = now.getMonth() + 1; //正常的月份,
 8         var intDay = now.getDate() - 1; //日期-1
 9         if (intDay == 0) {
10             intMonth--; //減少一個月
11             if (intMonth == 0) {
12                 intYear--; //0:減少一年
13                 intMonth = 12;
14                 intDay = 31;
15             }
16             else if (intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) {
17                 intDay = 30; //4,6,9,11:30天
18             }
19             else if (intMonth == 2) {
20                 intDay = 28; //2:28/29
21                 if (intYear % 4 == 0) {
22                     intDay = 29;
23                 }
24             } else {
25                 intDay = 31; //1,3,5,7,8,10,12 :31天
26             }
27         }
28 
29         var strMonth = (intMonth) < 10 ? "0" + (intMonth).toString() : (intMonth).toString();
30         var strDay = (intDay) < 10 ? "0" + (intDay).toString() : (intDay).toString();
31         var strEndDate = intYear + "-" + strMonth + "-" + strDay;
32         return strEndDate;
33     }
34     
35     console.log(dateAddYear('2018-6-10','2')); //  2020-06-09      

三、根據開始日期,計算count天過後的日期

beginDate是開始日期,字元串格式

count是指多少天,整型數

注意:setDate和getDate結合使用

date.setDate(date.getDate() + count);

1 function calculateDate(beginDate,count){
 2         var date = new Date(beginDate);
 3         date.setDate(date.getDate() + count);
 4         var year = date.getFullYear();
 5         var month = ("0" + (date.getMonth()+1)).slice(-2);
 6         var day = ("0" + date.getDate()).slice(-2);
 7         var hours = ("0" + date.getHours()).slice(-2);
 8         var minute = ("0" + date.getMinutes()).slice(-2);
 9         var second = ("0" + date.getSeconds()).slice(-2);
10 
11         var endDate = year + "-"+ month +"-"+ day +" "+ hours +":"+ minute +":" + second;
12 
13         return endDate;
14     }
15 
16     console.log(calculateDate('2018-5-26 23:50:32',30)); // 2018-06-25 23:50:32      

四、計算n月之後的日期

1 function addMonth(date,monthNum){
 2    var str = date.split('-');
 3    var day = parseInt(str[2]);
 4    var nextMonth = new Date( str[0], parseInt(str[1])+monthNum, 0);
 5    var max = nextMonth.getDate();
 6    endDate = new Date( str[0],str[1]-1+monthNum,day>max? max: day );
 7    return endDate.toLocaleDateString().match(/\d+/g).join('-');
 8 }
 9 
10 console.log(addMonth("2018-12-12",12));      
1 function addMonth(date,monthNum){
 2 
 3    var str = date.split('-');
 4    var oldDate = new Date(str[0], parseInt(str[1]), 0);
 5    var oldDay = oldDate.getDate();
 6    console.log(oldDay);
 7    var day = parseInt(str[2]);
 8    var nextMonth = new Date( str[0], parseInt(str[1])+monthNum, 0);
 9    var max = nextMonth.getDate();
10    if(day >28 && day < 31){
11            max = max - (oldDay - day);
12            console.log(max);
13    }
14    endDate = new Date( str[0],str[1]-1+monthNum,day>max? max: day );
15    return endDate.toLocaleDateString().match(/\d+/g).join('-');
16 }
17 
18 console.log(addMonth("2018-1-27",1));      

五、常用的Date對象方法

  1. Date()  傳回當日的日期和時間。  
  2. getDate()   從 Date 對象傳回一個月中的某一天 (1 ~ 31)。  
  3. getDay()    從 Date 對象傳回一周中的某一天 (0 ~ 6)。  
  4. getMonth()  從 Date 對象傳回月份 (0 ~ 11)。  
  5. getFullYear()   從 Date 對象以四位數字傳回年份。  
  6. getYear()   請使用 getFullYear() 方法代替。  
  7. getHours()  傳回 Date 對象的小時 (0 ~ 23)。  
  8. getMinutes()    傳回 Date 對象的分鐘 (0 ~ 59)。  
  9. getSeconds()    傳回 Date 對象的秒數 (0 ~ 59)。  
  10. getMilliseconds()   傳回 Date 對象的毫秒(0 ~ 999)。  
  11. getTime()   傳回 1970 年 1 月 1 日至今的毫秒數。  
  12. getTimezoneOffset() 傳回本地時間與格林威治标準時間 (GMT) 的分鐘差。  
  13. getUTCDate()    根據世界時從 Date 對象傳回月中的一天 (1 ~ 31)。  
  14. getUTCDay() 根據世界時從 Date 對象傳回周中的一天 (0 ~ 6)。  
  15. getUTCMonth()   根據世界時從 Date 對象傳回月份 (0 ~ 11)。  
  16. getUTCFullYear()    根據世界時從 Date 對象傳回四位數的年份。  
  17. getUTCHours()   根據世界時傳回 Date 對象的小時 (0 ~ 23)。  
  18. getUTCMinutes() 根據世界時傳回 Date 對象的分鐘 (0 ~ 59)。  
  19. getUTCSeconds() 根據世界時傳回 Date 對象的秒鐘 (0 ~ 59)。  
  20. getUTCMilliseconds()    根據世界時傳回 Date 對象的毫秒(0 ~ 999)。  
  21. parse() 傳回1970年1月1日午夜到指定日期(字元串)的毫秒數。  
  22. setDate()   設定 Date 對象中月的某一天 (1 ~ 31)。  
  23. setMonth()  設定 Date 對象中月份 (0 ~ 11)。  
  24. setFullYear()   設定 Date 對象中的年份(四位數字)。  
  25. setYear()   請使用 setFullYear() 方法代替。  
  26. setHours()  設定 Date 對象中的小時 (0 ~ 23)。  
  27. setMinutes()    設定 Date 對象中的分鐘 (0 ~ 59)。  
  28. setSeconds()    設定 Date 對象中的秒鐘 (0 ~ 59)。  
  29. setMilliseconds()   設定 Date 對象中的毫秒 (0 ~ 999)。  
  30. setTime()   以毫秒設定 Date 對象。  
  31. setUTCDate()    根據世界時設定 Date 對象中月份的一天 (1 ~ 31)。  
  32. setUTCMonth()   根據世界時設定 Date 對象中的月份 (0 ~ 11)。  
  33. setUTCFullYear()    根據世界時設定 Date 對象中的年份(四位數字)。  
  34. setUTCHours()   根據世界時設定 Date 對象中的小時 (0 ~ 23)。  
  35. setUTCMinutes() 根據世界時設定 Date 對象中的分鐘 (0 ~ 59)。  
  36. setUTCSeconds() 根據世界時設定 Date 對象中的秒鐘 (0 ~ 59)。  
  37. setUTCMilliseconds()    根據世界時設定 Date 對象中的毫秒 (0 ~ 999)。  
  38. toSource()  傳回該對象的源代碼。  
  39. toString()  把 Date 對象轉換為字元串。  
  40. toTimeString()  把 Date 對象的時間部分轉換為字元串。  
  41. toDateString()  把 Date 對象的日期部分轉換為字元串。  
  42. toGMTString()   請使用 toUTCString() 方法代替。  
  43. toUTCString()   根據世界時,把 Date 對象轉換為字元串。  
  44. toLocaleString()    根據本地時間格式,把 Date 對象轉換為字元串。  
  45. toLocaleTimeString()    根據本地時間格式,把 Date 對象的時間部分轉換為字元串。  
  46. toLocaleDateString()    根據本地時間格式,把 Date 對象的日期部分轉換為字元串。  
  47. UTC()   根據世界時傳回 1970 年 1 月 1 日 到指定日期的毫秒數。  
  48. valueOf()   傳回 Date 對象的原始值。 

繼續閱讀