JavaScript处理时间

导读:本篇文章讲解 JavaScript处理时间,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

前言

在处理时间的时候,发现对它用的频率特别高,因此打算开一个文章专门整理js处理时间的代码;
在文章发布后,如遇到没有写进来的将持续进行更新

时间处理

常用方法

date.getFullYear();  // 获取完整的年份(4位,1970)
date.getMonth();    // 获取月份(0-11,0代表1月,用的时候记得加上1)
date.getDate();     // 获取日(1-31)
date.getTime();     // 获取时间(从1970年1月1日开始的毫秒数)
date.getHours();    // 获取小时数(0-23)
date.getMinutes();  // 获取分钟数(0-59)
date.getSeconds();  // 获取秒数(0-59)

封装日期格式

— yyyy-mm-dd hh:mm:ss

    传入的参数为日期时间类型
    toTimeFormate(date) {
      let Y = date.getFullYear();
      let M =
        date.getMonth() + 1 - 0 >= 10
          ? Number(date.getMonth()) + 1
          : "0" + (Number(date.getMonth()) + 1);
      let D = date.getDate();
      let h = date.getHours() >= 10 ? date.getHours() : "0" + date.getHours();
      let m =
        date.getMinutes() >= 10 ? date.getMinutes() : "0" + date.getMinutes();
      let s =
        date.getSeconds() >= 10 ? date.getSeconds() : "0" + date.getSeconds();
      return Y + "-" + M + "-" + D + " " + h + ":" + m + ":" + s;
    },
传入参数为时间戳
function timestampToTime(timestamp) {
    var date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
    var Y = date.getFullYear() + '-';
    var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
    var D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) + ' ';
    var h = (date.getHours() < 10 ? '0'+date.getHours() : date.getHours()) + ':';
    var m = (date.getMinutes() < 10 ? '0'+date.getMinutes() : date.getMinutes()) + ':';
    var s = (date.getSeconds() < 10 ? '0'+date.getSeconds() : date.getSeconds());
    return Y+M+D+h+m+s;
}

—- yyyy-mm-dd

    传入的为时间戳
    yyyymmmddForTimeStamp(time) {
      let date = new Date(time);
      var y = date.getFullYear();
      var m = date.getMonth() + 1;
      m = m < 10 ? "0" + m : m;
      var d = date.getDate();
      d = d < 10 ? "0" + d : d;
      var h = date.getHours();
      h = h < 10 ? "0" + h : h;
      var minute = date.getMinutes();
      minute = minute < 10 ? "0" + minute : minute;
      var second = date.getSeconds();
      second = second < 10 ? "0" + second : second;
      return y + "-" + m + "-" + d + " " + h + ":" + minute + ":" + second;
    },

— hh:mm:ss

    传入的参数为时间戳 转时分秒
    toHHmmss(data) {
      var s;
      var hours = parseInt((data % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
      var minutes = parseInt((data % (1000 * 60 * 60)) / (1000 * 60));
      var seconds = (data % (1000 * 60)) / 1000;
      s =
        (hours < 10 ? "0" + hours : hours) +
        ":" +
        (minutes < 10 ? "0" + minutes : minutes) +
        ":" +
        (seconds < 10 ? "0" + seconds : seconds);
      if (s.length > 8) {
        s = s.slice(0, 8);
      }
      return s;
    },

分钟、时间戳互转

传入的为整数
    // 分钟转时间戳
    clockToTimeStamp(clock) {
      var s = "";
      s = Number(clock * 60) * 1000;
      return s;
    },
传入的为时间戳
    // 时间戳转分钟
    timeStampToClock(data) {
      var s = "";
      s = data / 1000 / 60;
      return s;
    },
传入的参数为 hh:mm:ss格式字符串
    // 时分秒转时间戳
    toTimeStamp(date) {
      var s = "";
      var hour = date.split(":")[0];
      var min = date.split(":")[1];
      var sec = date.split(":")[2];
      s = Number(hour * 3600) + Number(min * 60) + Number(sec);
      s = s * 1000;
      return s;
    },
传入的参数为整数
    // 秒转分钟
    secondToMinute(data) {
      let s = "";
      s = parseFloat((data / 60).toString()).toFixed(2);
      return s;
    },

时间格式转换

— 转时间戳

将当前日期转时间戳
var timeStamp = Date.parse(new Date());
var timeStamp = (new Date()).valueOf();
var timeStamp=new Date().getTime();
 将指定字符串转时间戳
    var exactTime = "2022-07-08 00:00:00";
    var exactTimeStamp = new Date(exactTime).getTime();
将当天的某一时间点(特定时间点)转时间戳
// 调用转yyyymmdd的方法
// 指定当天的09:00:00
let timeStr = this.yyyymmmddForTimeStamp(new Date().getTime()).slice(0, 10) + " 09:00:00";
//转时间戳
let timeStamp = new Date(timeStr.replace(/-/g, '/')).getTime();

— 转日期

当前时间戳转日期
// 获取现在的时间戳
var timeStamp=new Date().getTime();
var time = new Date(timeStamp);
字符串转日期

字符串数据应为yyyy-MM-dd hh:mm:ss 格式
如: 2022-09-01 12:00:00

        // 字符转日期
        getDate(strDate) {
            var st = strDate;
            var a = st.split(" ");
            var b = a[0].split("-");
            var c = a[1].split(":");
            var date = new Date(b[0], b[1], b[2], c[0], c[1], c[2])
            return date;
        }

— 转字符串

获取时间

— 获取本周、上周、下周的周一二三等

根据当前时间获取附近的时间点

      let now = new Date();
      let nowTime = now.getTime();
      let day = now.getDay();
      let oneDayTime = 24 * 60 * 60 * 1000;
      let beforeSundayTime = new Date(nowTime - day * oneDayTime); // 上周末
      
      let MondayTime = new Date(nowTime - (day - 1) * oneDayTime); //本周一
      
      let TuesdayTime = new Date(nowTime - (day - 2) * oneDayTime); // 本周二
      
      let WedDayTime = new Date(nowTime - (day - 3) * oneDayTime); // 本周三
      
      let thurdayTime = new Date(nowTime - (day - 4) * oneDayTime); // 本周四
      
      let fridayTime = new Date(nowTime - (day - 5) * oneDayTime); // 本周五
      
      let SundayTime = new Date(nowTime + (7 - day) * oneDayTime); //本周日
      
      let nextMondayTime = new Date(nowTime + (8 - day) * oneDayTime); // 下周一
      
      let nextTuesDayTime = new Date(nowTime + (9 - day) * oneDayTime); // 下周二
      
      let nextThursDayTime = new Date(nowTime + (11 - day) * oneDayTime); // 下周四
      
      let nextSundayTime = new Date(nowTime + (14 - day) * oneDayTime); // 下周末

— 获取当前时间

let now= new Date();

now.getYear(); //获取当前年份(2位)

now.getFullYear(); //获取完整的年份(4位,1970-???)

now.getMonth(); //获取当前月份(0-11,0代表1月)

now.getDate(); //获取当前日(1-31)

now.getDay(); //获取当前星期X(0-6,0代表星期天)

now.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)

now.getHours(); //获取当前小时数(0-23)

now.getMinutes(); //获取当前分钟数(0-59)

now.getSeconds(); //获取当前秒数(0-59)

now.getMilliseconds(); //获取当前毫秒数(0-999)

now.toLocaleDateString(); //获取当前日期

now.toLocaleTimeString(); //获取当前时间

now.toLocaleString( ); //获取日期与时间

— 获取指定日期

设定特定时间

到特定的年份(如2000)
var d = new Date()
d.setYear(2000)
到特定的月份(如4月)
var d = new Date()
d.setMonth(4);
到特定的日期(如15日)
var d = new Date()
d.setDate(15);
到特定的小时(如15时)
var d = new Date()
d.setHours(15);
到特定的分钟(如17分)
var d = new Date()
d.setMinutes(17);
到特定的秒钟(如35秒)
var d = new Date()
d.setSeconds(35);

设定特定时间节点

获取当月第一天
getFirstDayOfMonth () {
    var date = new Date();
    date.setDate(1);
    return date.format('yyyy-MM-dd');
}
获取当月最后一天
getLastDayOfMonth () {
    var date = new Date();
    var month = date.getMonth();
    date.setMonth(month+1);
    date.setDate(0);
    return date.format('yyyy-MM-dd');
}
获取本季度第一天
getFirstDayOfSeason () {
    var date = new Date();
    var month = date.getMonth();
    if(month <3 ){
        date.setMonth(0);
    }else if(2 < month && month < 6){
        date.setMonth(3);
    }else if(5 < month && month < 9){
        date.setMonth(6);
    }else if(8 < month && month < 11){
        date.setMonth(9);
    }
    date.setDate(1);
    return date.format('yyyy-MM-dd');;
}
获取本年的第一天
function getFirstDayOfYear () {
    var date = new Date();
    date.setDate(1);
    date.setMonth(0);
    return date.format('yyyy-MM-dd');;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/101125.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!