日常常用方法搜集--持续更新

338 阅读8分钟

判断时间大小

function timeBJ(){
    //获取当前时间
    var currentTime = new Date();
    
    //自定义时间
    var customTime="2020-04-26 00:00:00";  
    customTime= customTime.replace(/\-/g,"/");//替换字符,变成标准格式
    customTime= new Date(Date.parse(customTime));
    
    if(currentTime < customTime){
    	console.log("当前时间小于自定义时间");
    }else{
        console.log("当前时间大于自定义时间")
    }
}

获取当前月份以及到过去的一年的月份

function getMonths() {
      var dataArr = [];
      var data = new Date();
      var year = data.getFullYear();
      data.setMonth(data.getMonth() + 1, 1); //获取到当前月份,设置月份
      for (var i = 0; i < 12; i++) {
        data.setMonth(data.getMonth() - 1); //每次循环一次 月份值减1
        var m = data.getMonth() + 1;
        m = m < 10 ? "0" + m : m;
        dataArr.push(data.getFullYear() + "-" + m);
      }
       console.log(dataArr);
     return dataArr;
    }

获取时间差

function timeFn(d1) {//di作为一个变量传进来
//如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
var dateBegin = new Date(d1.replace(/-/g, "/"));//将-转化为/,使用new Date
var dateEnd = new Date();//获取当前时间
var dateDiff='';//时间差的毫秒数
if(dateEnd.getTime()>dateBegin.getTime()){
    dateDiff= dateEnd.getTime() - dateBegin.getTime();
}else{
    dateDiff= dateBegin.getTime() - dateEnd.getTime();
}
console.log(Math.floor(dateDiff / (24 * 3600 * 1000)))
var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//计算出相差天数
var leave1=dateDiff%(24*3600*1000) //计算天数后剩余的毫秒数
var hours=Math.floor(leave1/(3600*1000))//计算出小时数
//计算相差分钟数
var leave2=leave1%(3600*1000) //计算小时数后剩余的毫秒数
var minutes=Math.floor(leave2/(60*1000))//计算相差分钟数
//计算相差秒数
var leave3=leave2%(60*1000) //计算分钟数后剩余的毫秒数
var seconds=Math.round(leave3/1000)
console.log(" 相差 "+dayDiff+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒")
console.log(dateDiff+"时间差的毫秒数",dayDiff+"计算出相差天数",leave1+"计算天数后剩余的毫秒数"
,hours+"计算出小时数",minutes+"计算相差分钟数",seconds+"计算相差秒数");
}
var t3="2019-12-27 14:56:38";
timeFn(t3);

保持执行顺序

//创建一个迭代器,接收任意多个函数参数
function nextRegister(){
	var args = arguments;
	var count = 0;
	var comm = {};
	function nextTime(){	
		count++;
		if(count < args.length){
			if(args[count] && Object.prototype.toString.call(args[count]) == '[object Function]'){
				args[count](comm,nextTime);
			}
		}
	}
	if(args[count] && Object.prototype.toString.call(args[count]) == '[object Function]'){
		args[count](comm,nextTime);
	}
}&emsp;


/*
         comm:多个函数,公用的变量
         next:调用下一个函数
         * */
        function fn1(comm,next){
            console.log('1');
            comm.age = 20;
            next();
        }
        function fn2(comm,next){
            next();
            console.log('2');
            console.log(comm.age);
        }
        function fn3(comm,next){
            console.log('3');
        }
 
//开始执行迭代
nextRegister(fn1,fn2,fn3);

获取当前时日期以及往前推多少天日期

var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var day = date.getDate();
    if (month < 10) {
      month = "0" + month;
    }
    if (day < 10) {
      day = "0" + day;
    }
    //当前时间
    var nowDate = year + "-" + month + "-" + day;

    var dateO = new Date(date);
    dateO.setDate(date.getDate() - 7); //当前日期减7天

    var monthO;
    if (dateO.getMonth() + 1 > 9) {
      monthO = dateO.getMonth() + 1;
    } else {
      monthO = "0" + (dateO.getMonth() + 1);
    }

    var dayO;
    if (dateO.getDate() > 9) {
      dayO = dateO.getDate();
    } else {
      dayO = "0" + dateO.getDate();
    }

    this.setData({
      start: year + "-" + month + "-" + day,
      end: dateO.getFullYear() + "-" + monthO + "-" + dayO
    });

获取当前时间的n天后的时间戳

/**
 * 获取当前时间的n天后的时间戳
 * @param {number} n 天数
 * @returns {Number} 返回值为时间毫秒值
 */
export function toNextTimes(n){
    let timestamp = +new Date() + n * 86400000;
    return timestamp;
}

返回本周第一天的时间

/***
 * 本周第一天
 *  @return {*} WeekFirstDay 返回本周第一天的时间
 */
export function showWeekFirstDay(){
    let Nowdate=new Date();
    let WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);
    return WeekFirstDay;
}

返回本周最后一天的时间

/*
 * 本周最后一天
 *  @return {*} WeekLastDay 返回本周最后一天的时间
 */
export function showWeekLastDay(){
    let Nowdate=new Date();
    let WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);
    let WeekLastDay=new Date((WeekFirstDay/1000+6*86400)*1000);
    return WeekLastDay;
}

返回本月第一天的时间

/***
 * 本月第一天
 *  @return {*} MonthFirstDay 返回本月第一天的时间
 */
export function showMonthFirstDay(){
    let Nowdate=new Date();
    let MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth());
    return MonthFirstDay;
}

返回本月最后一天的时间

/***
 * 本月最后一天
 *  @return {*} MonthLastDay 返回本月最后一天的时间
 */
export function showMonthLastDay(){
    let Nowdate=new Date();
    let MonthNextFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth()+1);
    let MonthLastDay=new Date(MonthNextFirstDay-86400000);
    return MonthLastDay;
}

日期转时间戳

/**
 * 日期转时间戳
 * @param {String} time - 日期字符串,如'2018-8-8','2018,8,8','2018/8/8'
 * @returns {Number} 返回值为时间毫秒值
 */
export function timeToTimestamp (time) {
    let date = new Date(time);
    let timestamp = date.getTime();
    return timestamp;
}

格式化当前时间

/***
 * 格式化当前时间
 *  @return {string} timeText 返回系统时间字符串
 */
export function getdataTimeSec() {
    let time = new Date();
    let weekDay;
    let year = time.getFullYear();
    let month = time.getMonth() + 1;
    let day = time.getDate();
    //获取时分秒
    let h = time.getHours();
    let m = time.getMinutes();
    let s = time.getSeconds();
    //检查是否小于10
    h = check(h);
    m = check(m);
    s = check(s);
    let now_day = time.getDay();
    switch (now_day) {
        case 0: {
            weekDay = "星期日"
        }
            break;
        case 1: {
            weekDay = "星期一"
        }
            break;
        case 2: {
            weekDay = "星期二"
        }
            break;
        case 3: {
            weekDay = "星期三"
        }
            break;
        case 4: {
            weekDay = "星期四"
        }
            break;
        case 5: {
            weekDay = "星期五"
        }
            break;
        case 6: {
            weekDay = "星期六"
        }
            break;
        case 7: {
            weekDay = "星期日"
        }
            break;
    }
    let timeText = year + "年" + month + "月" + day + "日  " + " " + weekDay + " " + h + ":" + m +":" + s;

    return timeText
}

/**
 *  日期数字小于10,补“0”
 */
export function check(i) {
    let num;
    i < 10 ? num = "0" + i : num = i;
    return num;
}

返回指定时间戳之间的时间间隔

/**
 * 返回指定时间戳之间的时间间隔
 *  @param {*} startTime 开始时间的时间戳
 *  @param {*} endTime 结束时间的时间戳
 *  @return {string} str 返回时间字符串
 */
export function getTimeInterval(startTime, endTime) {
    let runTime = parseInt((endTime - startTime) / 1000);
    let year = Math.floor(runTime / 86400 / 365);
    runTime = runTime % (86400 * 365);
    let month = Math.floor(runTime / 86400 / 30);
    runTime = runTime % (86400 * 30);
    let day = Math.floor(runTime / 86400);
    runTime = runTime % 86400;
    let hour = Math.floor(runTime / 3600);
    runTime = runTime % 3600;
    let minute = Math.floor(runTime / 60);
    runTime = runTime % 60;
    let second = runTime;
    let str = '';
    if (year > 0) {
        str = year + '年';
    }
    if (year <= 0 && month > 0) {
        str = month + '月';
    }
    if (year <= 0 && month <= 0 && day > 0) {
        str = day + '天';
    }
    if (year <= 0 && month <= 0 && day <= 0 && hour > 0) {
        str = hour + '小时';
    }
    if (year <= 0 && month <= 0 && day <= 0 && hour <= 0 && minute > 0) {
        str = minute + '分钟';
    }
    if (year <= 0 && month <= 0 && day <= 0 && hour <= 0 && minute <= 0 && second > 0) {
        str += second + '秒';
    }
    str += '前';
    return str;
}

按类型格式化日期

/**
 * 按类型格式化日期
 * @param {*} date 具体日期变量
 * @param {string} dateType 需要返回类型
 * @return {string} dateText 返回为指定格式的日期字符串
 */
export function getFormatDate(date, dateType) {
    let dateObj = new Date(date);
    let month = dateObj.getMonth() + 1;
    let strDate = dateObj.getDate();
    let hours = dateObj.getHours();
    let minutes = dateObj.getMinutes();
    let seconds = dateObj.getSeconds();
    if (month >= 1 && month <= 9) {
        month = "0" + month;
    }
    if (strDate >= 0 && strDate <= 9) {
        strDate = "0" + strDate;

    }
    if (hours >= 0 && hours <= 9) {
        hours = "0" + hours
    }
    if (minutes >= 0 && minutes <= 9) {
        minutes = "0" + minutes
    }
    if (seconds >= 0 && seconds <= 9) {
        seconds = "0" + seconds
    }

    let dateText = dateObj.getFullYear() + '年' + (dateObj.getMonth() + 1) + '月' + dateObj.getDate() + '日';
    if (dateType == "yyyy-mm-dd") {
        dateText = dateObj.getFullYear() + '-' + (dateObj.getMonth() + 1) + '-' + dateObj.getDate();
    }
    if (dateType == "yyyy.mm.dd") {
        dateText = dateObj.getFullYear() + '.' + (dateObj.getMonth() + 1) + '.' + dateObj.getDate();
    }
    if (dateType == "yyyy-mm-dd MM:mm:ss") {
        dateText = dateObj.getFullYear() + '-' + month + '-' + strDate + ' ' + hours + ":" + minutes + ":" + seconds;
    }
    if (dateType == "mm-dd MM:mm:ss") {
        dateText = month + '-' + strDate + ' ' + hours + ":" + minutes + ":" + seconds;
    }
    if (dateType == "yyyy年mm月dd日 MM:mm:ss") {
        dateText = dateObj.getFullYear() + '年' + month + '月' + strDate + '日' + ' ' + hours + ":" + minutes + ":" + seconds;
    }
    return dateText;
}

判断是否为闰年

/**
 * 判断是否为闰年
* @param  {number} year 要判断的年份
* @return {boolean} 返回布尔值
*/
export function leapYear(year) {
    return !(year % (year % 100 ? 4 : 400));
}

返回两个年份之间的闰年

/** 
 * 返回两个年份之间的闰年
* @param  {number} start 开始年份
* @param  {number} end 结束年份
* @return {array}  arr 返回符合闰年的数组
*/
export function leapYears(start, end) {
    let arr = [];
    for (var i=start; i<end; i++) {
        if ( leapYear(i) ) {
            arr.push(i)
        }
    }
    return arr
}

判断时间格式是否有效

/**
 * 判断时间格式是否有效
* 短时间,如 (10:24:06)
* @param  {string} str 需要验证的短时间
* @return {boolean} 返回布尔值
*/
export function isTime(str) {
    var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
    if (a == null) { return false; }
    if (a[1] >= 24 || a[3] >= 60 || a[4] >= 60) {
        return false
    }
    return true;
}

验证是否是短时间

/**
* 短日期,形如 (2019-10-24)
* @param  {string} str 需要验证的短时间
* @return {boolean} 返回布尔值
*/
export function strDateTime(str){
    var result = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
    if (result == null) return false;
    var d = new Date(result[1], result[3] - 1, result[4]);
    return (d.getFullYear() == result[1] && d.getMonth() + 1 == result[3] && d.getDate() == result[4]);
}

是否长日期时间

/**
* 长日期时间,形如 (2019-10-24 10:24:06)
* @param  {string} str 需要验证的短时间
* @return {boolean} 返回布尔值
*/
export function strDateTime(str){
    var result = str.match(/^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
    if (result == null) return false;
    var d = new Date(result[1], result[3] - 1, result[4], result[5], result[6], result[7]);
    return (d.getFullYear() == result[1] && (d.getMonth() + 1) == result[3] && d.getDate() == result[4] && d.getHours() == result[5] && d.getMinutes() == result[6] && d.getSeconds() == result[7]);
}

验证日期大小

/**
 * 验证日期大小
* 例:"2019-10-24""2019-10-25"
* @param  {string} d1需要验证的日期1
* @param  {string} d2需要验证的日期2
* @return {boolean} 返回布尔值
*/
export function compareDate(d1, d2) {
    return ((new Date(d1.replace(/-/g, "\/"))) < (new Date(d2.replace(/-/g, "\/"))));
}

验证一个日期是不是今天

/** 
 * 验证一个日期是不是今天
* @param  {string} val 需要验证的日期
* @return {boolean} 返回布尔值
*/
export function isToday(val){
    return new Date().toLocaleDateString() == new Date(val).toLocaleDateString();
}

验证传入的日期是否是昨天

/**
 * 验证传入的日期是否是昨天
* @param  {string} val 需要验证的日期
* @return {boolean} 返回布尔值
*/
export function isYesterday(val) {
    var today = new Date();
    var yesterday = new Date(now - 1000 * 60 * 60 * 24);
    var test = new Date(val);
    if (yesterday.getYear() === test.getYear() && yesterday.getMonth() === test.getMonth() && yesterday.getDate() === test.getDate()) {
        return true;
    } else {
        return false;
    }
}

设置几天后的日期

/**
 * 设置几天后的日期
* @param  {string} date 起始日期
* @param  {number} day 向后的天数
* @return {string} 返回想要得到的日期
*/
export function convertDate (date, day) {
    let tempDate = new Date(date);
    tempDate.setDate(tempDate.getDate()+day);
    let Y = tempDate.getFullYear();
    let M = tempDate.getMonth()+1 < 10 ? '0'+(tempDate.getMonth()+1) : tempDate.getMonth()+1;
    let D = tempDate.getDate() < 10 ? '0'+(tempDate.getDate()) : tempDate.getDate();
    let result = Y + "-" + M + "-" + D
    return result;
}