关于前端:现代JavaScript高级教程Date类日期和时间处理

51次阅读

共计 4089 个字符,预计需要花费 11 分钟才能阅读完成。

点击在线浏览,体验更好 链接
古代 JavaScript 高级小册 链接
深入浅出 Dart 链接
古代 TypeScript 高级小册 链接

Date 类:日期和工夫解决

引言

在 JavaScript 中,Date类是用于解决日期和工夫的内置类。它提供了一系列属性和办法,使咱们可能操作和治理日期、工夫、时区等相干信息。本文将具体介绍 Date 类的属性、罕用办法以及利用场景,并提供相应的代码示例。

1. Date 类的属性

Date类具备以下罕用属性:

  • Date.prototype.constructor:返回创建对象实例的构造函数。对于 Date 类实例,该属性始终指向 Date 构造函数。
  • Date.prototype.toString():返回一个示意日期和工夫的字符串,通常以本地工夫格局显示。
  • Date.prototype.toISOString():返回一个合乎 ISO 8601 规范的日期和工夫字符串,格局为YYYY-MM-DDTHH:mm:ss.sssZ
  • Date.prototype.valueOf():返回一个示意日期对象的原始值的数值,即自 1970 年 1 月 1 日午夜(格林威治工夫)以来通过的毫秒数。

2. Date 类的罕用办法

2.1 日期和工夫获取办法

  • Date.prototype.getFullYear():获取年份(四位数)。
  • Date.prototype.getMonth():获取月份,返回值范畴为 0(一月)到 11(十二月)。
  • Date.prototype.getDate():获取日期,返回值范畴为 1 到 31。
  • Date.prototype.getHours():获取小时数,返回值范畴为 0 到 23。
  • Date.prototype.getMinutes():获取分钟数,返回值范畴为 0 到 59。
  • Date.prototype.getSeconds():获取秒数,返回值范畴为 0 到 59。
  • Date.prototype.getMilliseconds():获取毫秒数,返回值范畴为 0 到 999。

2.2 日期和工夫设置办法

  • Date.prototype.setFullYear(year[, month[, day]]):设置年份。
  • Date.prototype.setMonth(month[, day]):设置月份。
  • Date.prototype.setDate(day):设置日期。
  • Date.prototype.setHours(hour[, min[, sec[, ms]]]):设置小时数。
  • Date.prototype.setMinutes(min[, sec[, ms]]):设置分钟数。
  • Date.prototype.setSeconds(sec[, ms]):设置秒数。
  • Date.prototype.setMilliseconds(ms):设置毫秒数。

2.3 格式化办法

  • Date.prototype.toLocaleDateString():返回一个示意日期局部的字符串,依据本地工夫格式化。
  • Date.prototype.toLocaleTimeString():返回一个示意工夫局部的字符串,依据本地工夫格式化。
  • Date.prototype.toLocaleString():返回一个示意日期和工夫的字符串,依据本地工夫格式化。

2.4 日期和工夫计算方法

  • Date.prototype.getTime():返回一个示意日期对象的工夫值,即自 1970 年 1 月 1 日午夜(格林威治工夫)以来通过的毫秒数。
  • Date.prototype.setTime(timeValue):设置日期对象的工夫值。
  • Date.prototype.getTimezoneOffset():返回以后零碎时区与

UTC 之间的时间差,以分钟为单位。

  • Date.prototype.addDays(days):在以后日期根底上减少指定天数。
  • Date.prototype.addMonths(months):在以后日期根底上减少指定月份数。
  • Date.prototype.addYears(years):在以后日期根底上减少指定年份数。

3. Date 类的利用场景

Date类在 JavaScript 中广泛应用于以下场景:

  • 日期和工夫解决 Date 类提供了丰盛的办法来解决日期和工夫,包含日期格式化、日期比拟、日期计算等。这在开发中常常须要对日期和工夫进行操作的场景中十分有用,如日历利用、倒计时、时间轴等。
  • 时区解决 Date 类反对获取以后零碎时区与 UTC 之间的时间差,以及设置特定时区的日期和工夫。这对于全球化的利用、跨时区的事件调度、时区转换等十分重要。
  • 日期和工夫展现 :通过Date 类提供的办法,咱们能够依据本地工夫格局将日期和工夫展现给用户。这在用户界面的日期抉择、音讯工夫显示等场景中十分常见。
  • 日期的存储和传输 :在与服务器进行数据交互时,经常须要将日期数据存储或传输。Date 类提供了获取日期的工夫值、转换为 ISO 字符串等办法,不便数据的存储和传输。

    Date 类:日期和工夫解决

4. 罕用的 Date 办法实现

上面是一些罕用的 Date 办法的实现代码示例,以展现它们的根本用法:

4.1 格式化日期和工夫

4.1.1 实现 format 办法
Date.prototype.format = function(format) {const year = this.getFullYear();
  const month = String(this.getMonth() + 1).padStart(2, '0');
  const day = String(this.getDate()).padStart(2, '0');
  const hours = String(this.getHours()).padStart(2, '0');
  const minutes = String(this.getMinutes()).padStart(2, '0');
  const seconds = String(this.getSeconds()).pad

Start(2, '0');
  
  format = format.replace('YYYY', year);
  format = format.replace('MM', month);
  format = format.replace('DD', day);
  format = format.replace('HH', hours);
  format = format.replace('mm', minutes);
  format = format.replace('ss', seconds);
  
  return format;
};

// 应用示例
const date = new Date();
const formattedDate = date.format('YYYY-MM-DD HH:mm:ss');
console.log(formattedDate);
4.1.2 实现 toISODate 办法
Date.prototype.toISODate = function() {const year = this.getFullYear();
  const month = String(this.getMonth() + 1).padStart(2, '0');
  const day = String(this.getDate()).padStart(2, '0');
  
  return `${year}-${month}-${day}`;
};

// 应用示例
const date = new Date();
const isoDate = date.toISODate();
console.log(isoDate);

4.2 计算两个日期之间的天数差

Date.prototype.getDaysDiff = function(otherDate) {
  const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
  const diffInTime = Math.abs(this - otherDate);
  const diffInDays = Math.round(diffInTime / oneDay);
  
  return diffInDays;
};

// 应用示例
const date1 = new Date('2022-01-01');
const date2 = new Date('2022-01-10');
const daysDiff = date1.getDaysDiff(date2);
console.log(daysDiff); // 输入 9

4.3 获取以后月份的第一天和最初一天

Date.prototype.getFirstDayOfMonth = function() {const year = this.getFullYear();
  const month = this.getMonth();
  
  return new Date(year, month, 1);
};

Date.prototype.getLastDayOfMonth = function() {const year = this.getFullYear();
  const month = this.getMonth() + 1;
  
  return new Date(year, month, 0);
};

// 应用示例
const date = new Date();
const firstDayOfMonth = date.getFirstDayOfMonth();
const lastDayOfMonth = date.getLastDayOfMonth();
console.log(firstDayOfMonth);
console.log(lastDayOfMonth);

总结

本文介绍了 Date 类的属性、利用场景,并提供了一些罕用的 Date 办法的实现代码示例。Date类在 JavaScript 中用于解决日期和工夫相干的操作十分重要,把握其根本用法可能帮忙咱们更好地解决和治理日期和工夫。通过逐渐学习和实际,咱们能够在理论我的项目中灵活运用 Date 类,满足各种日期和工夫解决的需要。

参考资料

  • MDN Web Docs: Date
  • JavaScript Date Object
  • ECMAScript® 2021 Language Specification – Date Objects

正文完
 0