作者:丽春院少爷 | 来源:互联网 | 2024-12-21 12:00
本文将详细介绍如何在React和React Native项目中使用Javascript对日期进行格式化,并提供获取最近7天、近半年和近一年日期的方法。我们将通过自定义Date对象的格式化函数和辅助函数来实现这些功能。
// 自定义Date对象的格式化方法
Date.prototype.format = function (fmt) {
const 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+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substring(4 - RegExp.$1.length));
}
for (const k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : (`00${o[k]}`).slice(-2));
}
}
return fmt;
}
/**
* @description: 格式化日期
* @param {Date} date - 要格式化的日期,默认为当前日期
* @param {string} format - 日期格式字符串,例如 "yyyy-MM-dd HH:mm:ss"
* @return {string} - 格式化后的日期字符串
*/
export const formatDate = (date = new Date(), format = 'yyyy-MM-dd') => {
return new Date(date).format(format);
}
/**
* @description: 获取n年前的日期
* @param {number} n - 年数,默认为0
* @return {number} - Unix时间戳
*/
export const getYearAgoTimestamp = (n = 0) => {
const currentDate = new Date();
currentDate.setFullYear(currentDate.getFullYear() - n);
return currentDate.getTime();
}
/**
* @description: 获取n月前的日期
* @param {number} n - 月数,默认为0
* @return {number} - Unix时间戳
*/
export const getMOnthAgoTimestamp= (n = 0) => {
const currentDate = new Date();
currentDate.setMonth(currentDate.getMonth() - n);
return currentDate.getTime();
}
/**
* @description: 获取n天前的日期
* @param {number} n - 天数,默认为0
* @return {number} - Unix时间戳
*/
export const getDayAgoTimestamp = (n = 0) => {
const currentDate = new Date();
const pastDate = new Date(currentDate - n * 24 * 60 * 60 * 1000);
return pastDate.getTime();
}