js时间常用方法总结

482 阅读2分钟

用js实现时间减去前1小时、7天、1月、1年

var sdtime1 = new Date('2018-03-22 16:14:55')

var sdtime2 = sdtime1.setHours(sdtime1.getHours() -1)//小时

var sdtime3=new Date().setDate((new Date().getDate()-7))//7天
var sdtime4=new Date().setMonth((new Date().getMonth()-1))//一个月
var sdtime5=new Date().setFullYear((new Date().getFullYear()-1))//一年

console.log(new Date(sdtime2).Format("yyyy-MM-dd HH:mm:ss"));

如何获得两个日期之间的差异(以天为单位)

const getDaysDiffBetweenDates = (dateInitial, dateFinal) =>
   (dateFinal - dateInitial) / (1000 * 3600 * 24);

 // 事例
 getDaysDiffBetweenDates(new Date('2017-12-13'), new Date('2017-12-22')); // 9

获取时间范围


    // 初始化获取日期
    var myDate = new Date();
    var year = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
    var month = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
    var day = myDate.getDate(); //获取当前日(1-31)
    // 今天
    this.startTime1 = year + "-" + month + "-" + day;

    // 昨天
    // this.startTime2 = year + "-" + month + "-" + (day - 1);
    var end2 = new Date();
    var start2 = new Date();
    start2.setTime(start2.getTime() - 3600 * 1000 * 24 * 1);
    this.startTimeYes = this.GMTToStr(start2);
    this.endTimeYes = this.GMTToStr(end2);
    // console.log(this.startTimeYes, this.endTimeYes);

    // 近七天
    var end = new Date();
    var start = new Date();
    start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
    this.startTimeWeek = this.GMTToStr(start);
    this.endTimeWeek = this.GMTToStr(end);

    // 近15天
    var end1 = new Date();
    var start1 = new Date();
    start1.setTime(start1.getTime() - 3600 * 1000 * 24 * 15);
    this.startTimeMonth = this.GMTToStr(start1);
    this.endTimeMonth = this.GMTToStr(end1);


    GMTToStr(time){
        let date = new Date(time)
        let Str=date.getFullYear() + '-' +
        (date.getMonth() + 1) + '-' + 
        date.getDate() + ' ' + 
        date.getHours() + ':' + 
        date.getMinutes() + ':' + 
        date.getSeconds()
        return Str
    }

获取上月,本月,下月

//type(s,e) 开始时间,结束时间 months(-1,0,1) 上月,本月,下月
function getMonth(type, months) {
        var d = new Date();
        var year = d.getFullYear();
        var month = d.getMonth() + 1;
        if (Math.abs(months) > 12) {
            months = months % 12;
        };
        if (months != 0) {
            if (month + months > 12) {
                year++;
                month = (month + months) % 12;
            } else if (month + months < 1) {
                year--;
                month = 12 + month + months;
            } else {
                month = month + months;
            };
        };
        month = month < 10 ? "0" + month: month;
        var date = d.getDate();
        var firstday = year + "-" + month + "-" + "01";
        var lastday = "";
        if (month == "01" || month == "03" || month == "05" || month == "07" || month == "08" || month == "10" || month == "12") {
            lastday = year + "-" + month + "-" + 31;
        } else if (month == "02") {
            if ((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0)) {
                lastday = year + "-" + month + "-" + 29;
            } else {
                lastday = year + "-" + month + "-" + 28;
            };
        } else {
            lastday = year + "-" + month + "-" + 30;
        };
        var day = "";
        if (type == "s") {
            day = firstday;
        } else {
            day = lastday;
        };
        return day;
    }

时间转换

/** 
 * 时间戳转化为年 月 日 时 分 秒 
 * number: 传入时间戳 
 * format:返回格式,支持自定义,但参数必须与formateArr里保持一致 
*/  
function formatTime(number,format) {  
  
  var formateArr  = ['Y','M','D','h','m','s'];  
  var returnArr   = [];  
  
  var date = new Date(number * 1000);  
  returnArr.push(date.getFullYear());  
  returnArr.push(formatNumber(date.getMonth() + 1));  
  returnArr.push(formatNumber(date.getDate()));  
  
  returnArr.push(formatNumber(date.getHours()));  
  returnArr.push(formatNumber(date.getMinutes()));  
  returnArr.push(formatNumber(date.getSeconds()));  
  
  for (var i in returnArr)  
  {  
    format = format.replace(formateArr[i], returnArr[i]);  
  }  
  return format;  
} 

//数据转化  
function formatNumber(n) {  
  n = n.toString()  
  return n[1] ? n : '0' + n  
}  

调用示例:

var sjc = 1488481383;//时间戳
console.log(time.formatTime(sjc,'Y/M/D h:m:s'));//转换为日期:2017/03/03 03:03:03
console.log(time.formatTime(sjc, 'h:m'));//转换为日期:03:03