ts Date 原型增强 格式化函数 形参为格式化字符串模板
时间: 2024-03-24 08:37:18 浏览: 117
你可以通过为 `Date.prototype` 添加一个新的方法来实现格式化日期的功能。这样,你就可以在任何 `Date` 对象上调用这个方法,而无需每次都传递格式化字符串模板作为参数。
以下是一个示例代码:
```typescript
interface Date {
format(template: string): string;
}
Date.prototype.format = function (template: string): string {
const year = this.getFullYear();
const month = `0${this.getMonth() + 1}`.slice(-2);
const day = `0${this.getDate()}`.slice(-2);
const hours = `0${this.getHours()}`.slice(-2);
const minutes = `0${this.getMinutes()}`.slice(-2);
const seconds = `0${this.getSeconds()}`.slice(-2);
return template.replace('yyyy', year.toString())
.replace('MM', month)
.replace('dd', day)
.replace('HH', hours)
.replace('mm', minutes)
.replace('ss', seconds);
};
const now = new Date();
console.log(now.format('yyyy-MM-dd HH:mm:ss')); // 2022-08-05 14:30:00
```
在这个示例中,我们向 `Date.prototype` 添加了一个名为 `format` 的新方法。该方法接受一个字符串模板作为参数,用来指定输出格式。在方法内部,我们通过调用 `this` 来获取当前日期的各个部分,并使用字符串的 `replace` 方法将模板中的占位符替换为相应的日期值。最后,我们返回格式化后的日期字符串。
使用这个方法,你可以在任何 `Date` 对象上调用 `format` 方法,并传递一个格式化字符串模板作为参数,以获取格式化后的日期字符串。例如:
```typescript
const date = new Date(2022, 7, 5, 14, 30, 0);
console.log(date.format('yyyy-MM-dd HH:mm:ss')); // 2022-08-05 14:30:00
```
阅读全文