JS 字符串转date
在前端开发中,经常会遇到需要将字符串转换为日期对象的情况。比如从后端接口获取的日期数据是以字符串的形式返回,而我们需要在页面上显示成日期格式。在 JavaScript 中,我们可以使用一些方法将字符串转换为日期对象,并且进行日期的格式转换。
使用 Date 对象转换
JavaScript 中内置的 Date 对象可以用来表示日期和时间,我们可以通过传入一个表示日期的字符串来创建一个 Date 对象。
const dateString = "2021-10-20";
const dateObject = new Date(dateString);
console.log(dateObject);
运行上面的代码,会输出一个表示日期对象的字符串。注意,输入的日期字符串应该符合 ISO 8601 标准,即 “yyyy-mm-dd” 的格式。
另外,Date 对象还可以接受表示时间的字符串,比如 “yyyy-mm-ddThh:mm:ss” 格式的字符串。
const dateTimeString = "2021-10-20T15:30:00";
const dateTimeObject = new Date(dateTimeString);
console.log(dateTimeObject);
使用 moment.js 库转换
除了使用内置的 Date 对象,我们还可以使用第三方库 moment.js 来处理日期和时间。moment.js 提供了丰富的 API,可以方便地对日期进行格式化、比较等操作。
首先,我们需要在项目中引入 moment.js 库。可以通过 npm 安装:
npm install moment
然后在代码中使用 moment 函数来将字符串转换为日期对象:
const moment = require('moment');
const dateString = "2021-10-20";
const dateObject = moment(dateString);
console.log(dateObject.format('YYYY-MM-DD'));
上面的代码中,使用 moment 函数将字符串转换为 moment 对象,然后可以使用 format 方法将日期对象格式化为指定的格式。
日期格式化
在前端开发中,经常需要将日期格式化成不同的形式展示在页面上。下面是一些常用的日期格式化方式:
- YYYY-MM-DD:年份-月份-日期
- MM/DD/YYYY:月份/日期/年份
- DD-MM-YYYY:日期-月份-年份
- HH:MM:SS:小时:分钟:秒
可以使用 Date 对象的内置方法或 moment.js 库来将日期对象格式化为指定格式。
// 使用 Date 对象
const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const formattedDate = `{year}-{month}-${day}`;
console.log(formattedDate);
// 使用 moment.js
const momentDate = moment();
const formattedDate2 = momentDate.format("YYYY-MM-DD");
console.log(formattedDate2);
日期比较
有时候我们需要比较两个日期的大小,判断哪个日期在前面,哪个日期在后面。可以使用 Date 对象的比较符号(>, <, ==
)来比较日期对象,也可以使用 moment.js 提供的 isBefore、isAfter、isSame 方法来比较日期。
// 使用 Date 对象
const date1 = new Date("2021-10-20");
const date2 = new Date("2021-10-22");
if (date1 < date2) {
console.log("date1 在 date2 之前");
} else if (date1 > date2) {
console.log("date1 在 date2 之后");
} else {
console.log("date1 和 date2 相同");
}
// 使用 moment.js
const momentDate1 = moment("2021-10-20");
const momentDate2 = moment("2021-10-22");
if (momentDate1.isBefore(momentDate2)) {
console.log("date1 在 date2 之前");
} else if (momentDate1.isAfter(momentDate2)) {
console.log("date1 在 date2 之后");
} else {
console.log("date1 和 date2 相同");
}
总结
在开发过程中,经常需要将字符串转换为日期对象进行进一步处理。我们可以使用 JavaScript 的 Date 对象或第三方库 moment.js 来处理日期转换、格式化、比较等操作。