时间差

时间,是一个很奇特的事物。制作动画、写一个缓动函数、推算日期、制定策略、时间复杂度计算、不同地区的时区等等,都会用到时间差的计算。


📐 数学公式

1= 24 小时
1 小时 = 60 分钟
1 分钟 = 601= 1000毫秒

16:00 = 4:00 P.M. (1612 = 4)
17:20 = 5:20 P.M. (1712 = 5)

00:0024:00 表示为午夜 1212:00 表示为中午 1212: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 */