日期,时间

199 阅读3分钟

日期,时间相关处理

实现同步当前日期、时间、星期

//效果:2022-12-11 15:45 星期一
setInterval(()=>{
  let date =new Date()
  let newdate = date.toLocaleString('chinese', { hour12: false, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' })
  this.time =newdate.split(' ')[1]
},800)
let date =new Date()
let newdate = date.toLocaleString('chinese', { hour12: false, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' })
this.ymd =newdate.split(' ')[0].replaceAll('/','-')
var day = date.getDay();          //  周一返回的是1,周六是6,但是周日是0
var arr = [ "星期日","星期一","星期二","星期三","星期四","星期五","星期六",];
this.week =arr[day]

时间计算

    let startTime = new Date('2015-12-20'); // 开始时间
    let endTime = new Date(); // 结束时间
    let usedTime = endTime - startTime; // 相差的毫秒数
    let days = Math.floor(usedTime / (24 * 3600 * 1000)); // 计算出天数
    let leavel = usedTime % (24 * 3600 * 1000); // 计算天数后剩余的时间
    let hours = Math.floor(leavel / (3600 * 1000)); // 计算剩余的小时数
    let leavel2 = leavel % (3600 * 1000); // 计算剩余小时后剩余的毫秒数
    let minutes = Math.floor(leavel2 / (60 * 1000)); // 计算剩余的分钟数
    console.log(endTime - startTime); // 毫秒数
    console.log(Math.floor((endTime - startTime) / 1000)); // 秒数
    console.log(Math.floor((endTime - startTime) / 1000 / 60)); // 分钟
    console.log(Math.floor((endTime - startTime) / 1000 / 60 / 60)); // 小时
    console.log(Math.floor((endTime - startTime) / 1000 / 60 / 60 / 24)); // 天数

时间变成时间戳

new Date('2019-08-08 16:51:07').getTime() //1565254267000

获取当前日期

new Date().toLocaleDateString().replace(/\//g,'-') //2022-3-23
new Date().toISOString().slice(0, 10)

获取昨天的日期或明天的日期

//2023-3-06
new Date(new Date().valueOf() - 1000 * 60 * 60 * 48).toISOString().slice(0, 10)
//2023-3-09
new Date(new Date().valueOf() + 1000 * 60 * 60 * 48).toISOString().slice(0, 10)

获取月份是属于那个季度

//4季度
Math.ceil((new Date('2022-12-06').getMonth() + 1) / 3

获取月的第一天日期或最后一天

(new Date(new Date('2022-11-06').getFullYear(), new Date('2022-11-06').getMonth(), 1)).toLocaleDateString().replace(///g,'-')

new Date(new Date().getFullYear(), new Date().getMonth() + 1, 0).toLocaleDateString().replace(///g,'-')

获取日期是属于几月

//November
console.log(['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', ' November', 'December'][new Date('2022-11-06').getMonth()])

获取月份有多少天

//28
new Date(2022, 2, 0).getDate()

计算年有多少天

//366
(2020 % 4 === 0 && 2022 % 100 !== 0) || 2022 % 400 === 0 ? 366 : 365

比较两个日期

//compare(new Date('2020-03-30'), new Date('2020-01-01')); // true
const compare = (a, b) => a.getTime() > b.getTime();

设置时间

//Thu Mar 09 2023 13:12:00 GMT+0800
new Date(new Date().setHours(13, 12, 0, 0))

将多少秒转成时分秒形式(hh:mm:ss)

// formatSeconds(200)------>00:03:20
const formatSeconds = (s) => new Date(s * 1000).toISOString().substr(11, 8);
// Or
const formatSeconds = (s) => new Date(s * 1000).toUTCString().match(/(\d\d:\d\d:\d\d)/)[0];
// Or
const formatSeconds = (s) => [parseInt(s / 60 / 60), parseInt((s / 60) % 60), parseInt(s % 60)].join(':').replace(/\b(\d)\b/g, '0$1');