封装一个高阶的js 时间格式化的方法
时间: 2023-09-21 13:06:28 浏览: 112
### 回答1:
下面是一个高阶的 JavaScript 时间格式化函数的示例:
```
function formatDate(date, format) {
if (!date) return '';
if (!format) format = 'yyyy-MM-dd hh:mm:ss';
switch(typeof date) {
case 'string':
date = new Date(date.replace(/-/g,'/'));
break;
case 'number':
date = new Date(date);
break;
}
if (!date instanceof Date) return;
var dict = {
'yyyy': date.getFullYear(),
'M': date.getMonth() + 1,
'd': date.getDate(),
'H': date.getHours(),
'm': date.getMinutes(),
's': date.getSeconds(),
'MM': ('' + (date.getMonth() + 101)).substr(1),
'dd': ('' + (date.getDate() + 100)).substr(1),
'HH': ('' + (date.getHours() + 100)).substr(1),
'mm': ('' + (date.getMinutes() + 100)).substr(1),
'ss': ('' + (date.getSeconds() + 100)).substr(1)
};
return format.replace(/(yyyy|MM?|dd?|HH?|ss?|mm?)/g, function() {
return dict[arguments[0]];
});
}
```
这个函数可以接受一个时间对象、字符串或数字类型的时间戳作为第一个参数,并可以接受一个时间格式字符串作为第二个参数。如果第二个参数不传,默认格式是 "yyyy-MM-dd hh:mm:ss"。
使用方式:
```
console.log(formatDate(new Date(), 'yyyy-MM-dd HH:mm:ss'))
console.log(formatDate(1609452400000, 'yyyy-MM-dd'))
console.log(formatDate('2021-09-01 12:00:00', 'yyyy-MM-dd'))
```
请注意,此代码仅供参考,在实际项目中可能需要根据具体需求进行修改。
### 回答2:
要封装一个高阶的 JavaScript 时间格式化方法,我们可以通过使用 Date 对象和字符串操作来实现。以下是一个简单的实现示例:
```javascript
function formatTime(time, format) {
var date = new Date(time);
var year = date.getFullYear();
var month = padZero(date.getMonth() + 1);
var day = padZero(date.getDate());
var hour = padZero(date.getHours());
var minute = padZero(date.getMinutes());
var second = padZero(date.getSeconds());
var result = format.replace('yyyy', year)
.replace('MM', month)
.replace('dd', day)
.replace('HH', hour)
.replace('mm', minute)
.replace('ss', second);
return result;
}
function padZero(num) {
return (num < 10 ? '0' : '') + num;
}
```
这个方法接受两个参数:时间戳和格式字符串。时间戳可以是一个表示时间的数字或字符串,格式字符串用来指定输出的时间格式。通过传入对应的格式字符可以获得不同精度的时间格式,比如 'yyyy-MM-dd HH:mm:ss' 可以得到类似 '2022-07-20 15:30:45' 的结果。
此外,我们在方法中使用了一个辅助函数 padZero 来处理小时、分钟和秒钟这些数字格式,确保它们始终为两位数。
这个方法可以方便地用于项目中的时间格式化需求。通过将时间戳和格式传入方法,即可得到所需的格式化时间字符串。
### 回答3:
时间格式化是在开发中常用的一个功能。下面是一个封装了高阶的JavaScript时间格式化的方法:
```javascript
function formatDate(date, format) {
// 获取年份
const year = date.getFullYear().toString();
// 获取月份,月份从0开始,需要加上1
const month = (date.getMonth() + 1).toString().padStart(2, '0');
// 获取日期
const day = date.getDate().toString().padStart(2, '0');
// 获取小时
const hour = date.getHours().toString().padStart(2, '0');
// 获取分钟
const minute = date.getMinutes().toString().padStart(2, '0');
// 获取秒钟
const second = date.getSeconds().toString().padStart(2, '0');
// 定义格式化的规则映射表
const formatMap = {
'YYYY': year,
'MM': month,
'DD': day,
'HH': hour,
'mm': minute,
'ss': second
};
// 替换格式化规则
let formattedDate = format.replace(/YYYY|MM|DD|HH|mm|ss/g, match => formatMap[match]);
return formattedDate;
}
// 测试示例
const date = new Date();
const formattedDate = formatDate(date, 'YYYY-MM-DD HH:mm:ss');
console.log(formattedDate);
```
这个方法接受两个参数:`date`和`format`。`date`是一个日期对象,可以是当前时间,也可以是其他时间;`format`是一个格式化字符串,用于指定需要返回的时间格式。方法首先通过`getDate`系列方法获取日期相关的各个部分,然后定义了一个格式化规则的映射表`formatMap`,根据规则替换格式化字符串,最后返回格式化后的时间字符串。
阅读全文