时间类型的相关教程参考 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date
初始化日期
有四种方式
new Date() // 当前日期和时间
new Date(milliseconds) //返回从 1970 年 1 月 1 日至今的毫秒数
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)
上面的参数大多数都是可选的,在不指定的情况下,默认参数是0。
日期比较
直接用>、<、=进行比较
var x=new Date();
x.setFullYear(2100,0,14);
var today = new Date();
if (x>today){
alert("今天是2100年1月14日之前");
}else{
alert("今天是2100年1月14日之后");
}
日期/时间库
现在只要一百度,就是推荐 Moment.js。但是这个工具 =已经不再推荐使用了,可以参考官网 http://momentjs.cn/docs/ 的原话.好的是人家给出了一些替代工具
luxon:https://moment.github.io/luxon/#/
nodejs:https://day.nodejs.cn/
date-fns:https://date-fns.org/
js-joda:https://js-joda.github.io/js-joda/
不用库,JavaScript 一直有一个 Date 对象可以使用。
常用的时间操作
生成utc格式的时间
// 创建当前时间的 UTC 时间
const now = new Date();
const utcNow = new Date(now.getTime() + now.getTimezoneOffset() * 60000);
// 创建指定时间的 UTC 时间
const date = new Date('2022-01-01T00:00:00');
const utcDate = new Date(date.getTime() + date.getTimezoneOffset() * 60000);
生成北京时间
2023/10/9 18:14:22
const now = new Date();
const beijingTime = now.toLocaleString("zh-CN", { timeZone: "Asia/Shanghai" });
console.log(beijingTime);
上面生成的时间中 月、日 都不是两位数
const now = new Date();
const options = { timeZone: "Asia/Shanghai", year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' };
const beijingTime = now.toLocaleString("zh-CN", options);
console.log(beijingTime);
去掉符号
const now = new Date();
const options = { timeZone: "Asia/Shanghai", year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' };
const beijingTime = now.toLocaleString("zh-CN", options).replace(/[\/\s:]/g, '');
console.log(beijingTime);
生成时间字符串
生成形如 2023100909594504
const now = new Date();
const beijingTime = now.toLocaleString("zh-CN", { timeZone: "Asia/Shanghai" });
const currentDateTime = beijingTime.toISOString().replace(/[-T:.Z]/g, '');