2023-03-14
JS
00

目录

根据给定的时间偏移量和格式化字符串格式化日期时间方法
这个函数可以根据需求格式化时间,并且也支持修改时间。以下是一些调用方法
1. 获取当前时间并格式化
2. 获取当前时间并按指定格式格式化
3. 获取当前时间前一天的时间并格式化
4. 获取当前时间前一周的时间并按指定格式格式化
5. 获取指定时间并格式化
6. 获取指定时间前一小时的时间并格式化
7. 获取指定时间前一年一月一日一小时一分一秒的时间并格式化
8. 获取当前时间前一年一月一日一小时一分一秒的时间并格式化
9. 获取当前时间后一年一月一日星期的时间并格式化

日期动态前后格式化处理

这篇文章主要介绍了一个JavaScript函数,用于根据给定的时间偏移量和格式化字符串来动态格式化日期时间,支持自定义时间格式和计算过去或未来的特定时间点。

根据给定的时间偏移量和格式化字符串格式化日期时间方法

js
/** 根据给定的时间偏移量和格式化字符串格式化日期时间。 @param {Object} numAgo - 时间偏移量对象,包括以下属性: years {number} 年数偏移量,默认为 0。 months {number} 月数偏移量,默认为 0。 days {number} 天数偏移量,默认为 0。 hours {number} 小时数偏移量,默认为 0。 minutes {number} 分钟数偏移量,默认为 0。 seconds {number} 秒数偏移量,默认为 0。 @param {string} format - 时间格式化字符串,默认为 '{y}-{m}-{d} {h}:{i}:{s}'。 可使用的占位符有:{y} 年、{m} 月、{d} 日、{h} 小时、{i} 分钟、{s} 秒、{w} 星期。 @param {Date} date - 基准日期时间,默认为当前时间。 @returns {string} 格式化后的日期时间字符串。 */ function getFormattedDate( numAgo = { years: 0, months: 0, days: 0, hours: 0, minutes: 0, seconds: 0 }, format = '{y}-{m}-{d} {h}:{i}:{s}', date = new Date() ) { // 根据 numAgo 修改时间 const { years = 0, months = 0, days = 0, hours = 0, minutes = 0, seconds = 0, } = numAgo date.setFullYear(date.getFullYear() - years) date.setMonth(date.getMonth() - months) date.setDate(date.getDate() - days) date.setHours(date.getHours() - hours) date.setMinutes(date.getMinutes() - minutes) date.setSeconds(date.getSeconds() - seconds) // 获取年、月、日、时、分、秒、星期 const [y, m, d, h, i, s] = [ date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), ] const w = ['日', '一', '二', '三', '四', '五', '六'][date.getDay()] // 格式化时间 const formattedDate = format .replace(/\{y\}/g, y) .replace(/\{m\}/g, m.toString().padStart(2, '0')) .replace(/\{d\}/g, d.toString().padStart(2, '0')) .replace(/\{h\}/g, h.toString().padStart(2, '0')) .replace(/\{i\}/g, i.toString().padStart(2, '0')) .replace(/\{s\}/g, s.toString().padStart(2, '0')) .replace(/\{w\}/g, w) return formattedDate }

这个函数可以根据需求格式化时间,并且也支持修改时间。以下是一些调用方法

1. 获取当前时间并格式化

js
const currentTime = getFormattedDate() console.log(currentTime) // 输出如:2023-03-14 18:34:14

2. 获取当前时间并按指定格式格式化

js
const format = '{y}/{m}/{d} {h}:{i}:{s}' const currentTime = getFormattedDate({}, format) console.log(currentTime) // 输出如:2023/03/14 18:35:30

3. 获取当前时间前一天的时间并格式化

js
const numAgo = { days: 1 } const currentTime = getFormattedDate(numAgo) console.log(currentTime) // 输出如:2023-03-13 18:35:51

4. 获取当前时间前一周的时间并按指定格式格式化

js
const numAgo = { days: 7 } const format = '{y}/{m}/{d} {h}:{i}:{s}' const currentTime = getFormattedDate(numAgo, format) console.log(currentTime) // 输出如:2023/03/07 18:36:07

5. 获取指定时间并格式化

js
const date = new Date('2022-02-02 12:00:00') const currentTime = getFormattedDate({}, '{y}/{m}/{d} {h}:{i}:{s}', date) console.log(currentTime) // 输出如:2022/02/02 12:00:00

6. 获取指定时间前一小时的时间并格式化

js
const date = new Date('2022-02-02 12:00:00') const numAgo = { hours: 1 } const currentTime = getFormattedDate(numAgo, '{y}-{m}-{d} {h}:{i}:{s}', date) console.log(currentTime) // 输出如:2022-02-02 11:00:00

7. 获取指定时间前一年一月一日一小时一分一秒的时间并格式化

js
const currentTime = getFormattedDate( { years: 1, months: 1, days: 1, hours: 1, minutes: 1, seconds: 1 }, '{y}-{m}-{d} {h}:{i}:{s}', new Date('2022-03-14 17:37:00') ) console.log(currentTime) // 输出如:2021-02-13 16:35:59

8. 获取当前时间前一年一月一日一小时一分一秒的时间并格式化

js
const currentTime = getFormattedDate( { years: 1, months: 1, days: 1, hours: 1, minutes: 1, seconds: 1 }, '{y}-{m}-{d} {h}:{i}:{s}' ) console.log(currentTime) // 输出如:2022-02-13 18:25:13

9. 获取当前时间后一年一月一日星期的时间并格式化

js
const currentTime = getFormattedDate( { years: 1, months: 1, days: 1 }, '{y}-{m}-{d} 星期{w}' ) console.log(currentTime) //输出如:2023-03-15 星期三
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:liuxuechao

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!