专栏首页前端知识分享js时间戳转换日期格式和日期计算

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 对象的原始值。 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 第34天:日期函数、定时器、倒计时

    一、日期函数(Date()) 设置本地日期:年月日时分秒 1、声明日期 var date=new Date();//创建一个新的日期函数 2、使用函数 date...

    半指温柔乐
  • 第192天:js---Date对象属性和方法总结

    半指温柔乐
  • 第178天:表单验证

    半指温柔乐
  • JavaScript Date对象

    JavaScript 的时间是由世界标准时间(UTC)1970 年 1 月 1 日开始,用毫秒计时

    Nian糕
  • JavaScript 日期之某天的下一天是哪天

    解决如题所示的问题,其实只需解决某天所在的月份有几天的问题:如果该天是这个月的最后一天,则下一天为下个月1号;否则,下一天的天的值比该天的值大 1。解决某天所在...

    Joel
  • Java 线程池架构原理和源码解析(ThreadPoolExecutor)

    使用Executors最常用的莫过于是使用:Executors.newFixedThreadPool(int)这个方法,因为它既可以限制数量,而且线程用完后不会...

    田维常
  • 机器人实践课程镜像分享及使用说明(Arduino+ROS1+ROS2+Gazebo+SLAM+...)

    经过5年尝试和努力,在吸取indigo、kinetic版本经验后,融合Arduino、ROS1、ROS2、Gazebo和SLAM的适用机器人爱好者的实践课程镜像...

    zhangrelay
  • 机器人实践课程镜像分享及使用说明(Arduino+ROS1+ROS2+Gazebo+SLAM+...)

    经过5年尝试和努力,在吸取indigo、kinetic版本经验后,融合Arduino、ROS1、ROS2、Gazebo和SLAM的适用机器人爱好者的实践课程镜像...

    zhangrelay
  • 前后端分离实践

    前后端分离并不是什么新鲜事,到处都是前后端分离的实践。然而一些历史项目在从一体化 Web 设计转向前后端分离的架构时,仍然不可避免的会遇到各种各样的问题。由于层...

    企鹅号小编
  • 【NLP】 NLP领域最具影响力的国内外会议介绍

    众所周知,参加学术会议是进入学术圈、走进学术前沿的重要方式。在学术会议上,不仅可以集中听取最新的成果报告,还有讲习班、工作坊、社交活动等形式,了解那些不会写到论...

    用户1508658

扫码关注云+社区

领取腾讯云代金券