JavaScript Date对象
2021-10-14 本文已影响0人
微语博客
JavaScript Date对象用于处理日期和时间。
创建日期
可以通过 new 关键词来定义 Date 对象。
var date1 = new Date();//返回Date对象
console.log(date1);//Thu Oct 14 2021 21:58:44 GMT+0800 (中国标准时间)
var date2 = new Date(1631454531235);//返回指定时间戳的Date对象
console.log(date2);//Sun Sep 12 2021 21:48:51 GMT+0800 (中国标准时间)
var date3 = new Date("2021.10.05 15:20:30");//返回字符串日期的Date对象
console.log(date3);//Tue Oct 05 2021 15:20:30 GMT+0800 (中国标准时间)
var date4 = new Date(2021,10,10);//返回指定格式日期的Date对象
console.log(date4);//Wed Nov 10 2021 00:00:00 GMT+0800 (中国标准时间)
new Date(2021,10,10);表示的日期是2021年11月10日。
时间戳
JS 的时间戳指的是格林威治标准时间1970,1,1零时,距离现在的毫秒数。格林威治标准时间是零时区的地方时。
var now = Date.now();//返回现在的时间戳
console.log(now);//1634221792520
var date1 = new Date();//返回Date对象,可以获取指定对象的时间戳
console.log(date.getTime());//1634221792521
console.log(date.valueOf());//1634221792521
var now2 = Date.parse(new Date());//返回Date对象的时间戳
console.log(now2);//1634221923000
设置时间
通过使用针对日期对象的方法,我们可以很容易地对日期进行操作。
var date = new Date();
date.setFullYear(2022,0,1);//返回指定日期时间戳
console.log(date);//1641048099469
var date = new Date();
date.setDate(date.getDate()+10);//10天后
console.log(date);//Sun Oct 24 2021 22:44:31 GMT+0800 (中国标准时间)
如果增加天数会改变月份或者年份,那么日期对象会自动完成这种转换。
日期比较
通过日期转换时间戳可以很容易比较日期的前后
var time = new Date().setFullYear(2021,10,24);//返回指定日期时间戳
var now = Date.now();//返回当前时间戳
time-now > 0 ? console.log("日期在以后") : console.log("日期在以前");
格式化日期
很多时候我们需要指定格式的日期,这里我在网上找了个JS格式化日期的函数,拿来即用挺好的,感谢大佬。
Date.prototype.format = function (fmt) {
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
// 获取年份 // ①
if (/(y+)/i.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
// ②
if (new RegExp("(" + k + ")", "i").test(fmt)) {
fmt = fmt.replace(
RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return fmt;
}
var now = new Date();
console.log(now.format("YY-MM-DD"));//21-10-14
console.log(now.format("YYYY/MM/DD"));//2021/10/14
日期常用和方法
| 方法 | 描述 |
|---|---|
| getDate() | 返回月中的第几天(从 1 到 31)。 |
| getDay() | 返回星期几(0-6)。 |
| getFullYear() | 返回年份。 |
| getHours() | 返回小时(从 0-23)。 |
| getMilliseconds() | 返回毫秒(0-999)。 |
| getMinutes() | 返回分钟(从 0-59)。 |
| getMonth() | 返回月份(从 0-11)。 |
| getSeconds() | 返回秒数(从 0-59)。 |
| getTime() | 返回自 1970 年 1 月 1 日午夜以来与指定日期的毫秒数。 |
| getTimezoneOffset() | 返回 UTC 时间与本地时间之间的时差,以分钟为单位。 |
| getUTCDate() | 根据世界时,返回月份中的第几天(从 1 到 31)。 |
| getUTCDay() | 根据世界时,返回星期几(0-6)。 |
| getUTCFullYear() | 根据世界时,返回年份。 |
| getUTCHours() | 根据世界时,返回小时(0-23)。 |
| getUTCMilliseconds() | 根据世界时,返回毫秒数(0-999)。 |
| getUTCMinutes() | 根据世界时,返回分钟(0-59)。 |
| getUTCMonth() | 根据世界时,返回月份(0-11)。 |
| getUTCSeconds() | 根据世界时,返回秒数(0-59)。 |
| 方法 | 描述 |
|---|---|
| now() | 返回自 1970 年 1 月 1 日午夜以来的毫秒数。 |
| parse() | 解析日期字符串并返回自 1970 年 1 月 1 日以来的毫秒数。 |
| setDate() | 设置 Date 对象中月的某一天。 |
| setFullYear() | 设置日期对象的年份 |
| setHours() | 设置日期对象的小时。 |
| setMilliseconds() | |
| setMinutes() | 设置日期对象的分钟数。 |
| setMonth() | 设置日期对象的月份。 |
| setSeconds() | 设置日期对象的秒数。 |
| setTime() | 将日期设置为 1970 年 1 月 1 日之后/之前的指定毫秒数。 |
| setUTCDate() | 根据世界时,设置 Date 对象中月份的一天。 |
| setUTCFullYear() | 根据世界时,设置日期对象的年份。 |
| setUTCHours() | 根据世界时,设置日期对象的小时。 |
| setUTCMilliseconds() | 根据世界时,设置日期对象的毫秒数。 |
| setUTCMinutes() | 根据世界时,设置日期对象的分钟数。 |
| setUTCMonth() | 根据世界时,设置日期对象的月份。 |
| setUTCSeconds() | 根据世界时,设置日期对象的秒数。 |
| toDateString() | 将 Date 对象的日期部分转换为可读字符串。 |
| toISOString() | 使用 ISO 标准将日期作为字符串返回。 |
| toJSON() | 以字符串形式返回日期,格式为 JSON 日期。 |
| toLocaleDateString() | 使用区域设置约定将 Date 对象的日期部分作为字符串返回。 |
| toLocaleTimeString() | 使用区域设置约定将 Date 对象的时间部分作为字符串返回。 |
| toLocaleString() | 使用区域设置约定将 Date 对象转换为字符串。 |
| toString() | 将 Date 对象转换为字符串。 |
| toTimeString() | 将 Date 对象的时间部分转换为字符串。 |
| toUTCString() | 根据世界时,将 Date 对象转换为字符串。 |
| UTC() | 根据 UTC 时间,返回自 1970 年 1 月 1 日午夜以来的日期中的毫秒数。 |
| valueOf() | 返回 Date 对象的原始值。 |