时间差
时间,是一个很奇特的事物。制作动画、写一个缓动函数、推算日期、制定策略、时间复杂度计算、不同地区的时区等等,都会用到时间差的计算。
📐 数学公式
1 天 = 24 小时 1 小时 = 60 分钟 1 分钟 = 60 秒 1 秒 = 1000毫秒 16:00 = 4:00 P.M. (16 – 12 = 4) 17:20 = 5:20 P.M. (17 – 12 = 5) 00:00 或 24:00 表示为午夜 12 点 12:00 表示为中午 12 点 12:30 = 12:30 P.M. 00:25 = 12:25 A.M
📌 JavaScript
参考代码:index.js
/* 开始时间 */ const start = '2022/09/13 00:00:00'; /* 结束时间 */ const now = new Date(); /* 时间差的毫秒数 */ const diff = now.getTime() - new Date(start).getTime(); /* 输出:Fri Sep 16 2022 12:30:53 GMT+0800 (China Standard Time) */ console.log(now); /* 输出:Fri, 16 Sep 2022 04:30:53 GMT */ console.log(now.toUTCString()); /* 输出:1663302653363 */ console.log(now.getTime()); /* 输出:1663302653363 */ console.log(Date.now()); /* 相差天数的计算方法(1) */ /* Math.floor下舍入,Math.ceil上舍入 */ /* ------------------------ */ const days = Math.floor(diff/(24*3600*1000)); /* 计算天数后剩余的毫秒数 */ const leave1 = diff % (24*3600*1000); const hh_c = Math.floor(leave1/(3600*1000)); /* 计算小时数后剩余的毫秒数 */ const leave2 = leave1 % (3600*1000); const mm_c = Math.floor(leave2/(60*1000)); /* 计算分钟数后剩余的毫秒数 */ const leave3 = leave2 % (60*1000); const ss_c = Math.round(leave3/1000); /* 输出:相差3天12小时33分钟54秒 */ console.log(`相差${days}天${hh_c}小时${mm_c}分钟${ss_c}秒`); /* 相差天数的计算方法(2) */ /* ------------------------ */ let msec = diff; const hh = Math.floor(msec / 1000 / 60 / 60); msec -= hh * 1000 * 60 * 60; const mm = Math.floor(msec / 1000 / 60); msec -= mm * 1000 * 60; const ss = Math.floor(msec / 1000); msec -= ss * 1000; /* 输出:相差84小时33分钟54秒 (84小时相当于3.5天) */ console.log(`相差${hh}小时${mm}分钟${ss}秒`); /** * 格式化时间为AM/PM格式 * @param {DateString} date - 输入一个时间戳字符串 * @returns {String} 返回一个时间字符串 */ function timeToAMPM(date) { let hours = date.getHours(); let minutes = date.getMinutes(); const ampm = hours >= 12 ? 'pm' : 'am'; hours = hours % 12; hours = hours ? hours : 12; minutes = minutes < 10 ? '0' + minutes : minutes; const strTime = hours + ':' + minutes + ' ' + ampm; return strTime; } export { timeToAMPM };
测试:test.js
import { timeToAMPM } from './index'; console.log(timeToAMPM(new Date)); /* 输出: 5:40 pm */ console.log(timeToAMPM(new Date('December 2, 2022 03:24:00'))); /* 输出: 3:24 am */ console.log(timeToAMPM(new Date('December 2, 2022 00:12:00'))); /* 输出: 12:12 am */