本文介绍JavaScript中日期时间格式化的两种主要方式:原生JS自定义函数与Moment.js库。详细演示了如何将日期转换为指定格式,并深入讲解Moment.js在获取当前时间、星期、Unix时间戳、相对时间计算及复杂格式化中的应用,附带常用格式代码对照表供开发者参考。
JavaScript日期时间格式化
实现日期时间向指定格式的转换,例如将日期时间格式化为“YYYY-mm-dd HH:MM”形式,输出结果如“2019-06-06 19:45”。
function dateFormat(fmt, date) {
let ret;
const opt = {
"Y+": date.getFullYear().toString(), // 年
"m+": (date.getMonth() + 1).toString(), // 月
"d+": date.getDate().toString(), // 日
"H+": date.getHours().toString(), // 时
"M+": date.getMinutes().toString(), // 分
"S+": date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
};
};
return fmt;
}
具体使用方法如下:
let date = new Date()
dateFormat("YYYY-mm-dd HH:MM", date)
>>> 2019-06-06 19:45`
若项目中涉及大量日期时间处理需求,建议采用moment.js这一日期处理库,其操作简便且高效。
使用Moment.js进行日期时间格式化
Moment.js是一款轻量级JavaScript时间处理库,旨在简化日常开发中的时间操作,提升开发效率。在常规开发场景中,时间处理通常涵盖获取时间、设置时间、格式化时间以及比较时间等核心功能。
日期格式化示例
获取当前时间的方法:
moment().format('YYYY-MM-DD HH:mm:ss'); //2014-09-24 23:36:09
判断今天是星期几的代码:
moment().format('d'); //3
将当前时间转换为Unix时间戳的方式:
moment().format('X');
相对时间处理
例如,日期“20120901”相对于当前时间显示为“2年前”。
moment("20120901", "YYYYMMDD").fromNow(); //2 years ago
计算7天后的日期:
moment().add('days',7).format('YYYY年MM月DD日'); //2014年10月01日
计算9小时后的具体时间:
moment().add('hours',9).format('HH:mm:ss');
Moment.js提供了详尽的文档支持,利用该库可构建如日历应用等复杂的日期时间系统。在日常开发中,格式化时间是最常用的功能之一。下表整理了常用格式代码及其说明,供开发者查阅:
| 格式代码 | 说明 | 返回值例子 |
| M | 数字表示的月份,没有前导零 | 1到12 |
| MM | 数字表示的月份,有前导零 | 01到12 |
| MMM | 三个字母缩写表示的月份 | Jan到Dec |
| MMMM | 月份,完整的文本格式 | January到December |
| Q | 季度 | 1到4 |
| D | 月份中的第几天,没有前导零 | 1到31 |
| DD | 月份中的第几天,有前导零 | 01到31 |
| d | 星期中的第几天,数字表示 | 0到6,0表示周日,6表示周六 |
| ddd | 三个字母表示星期中的第几天 | Sun到Sat |
| dddd | 星期几,完整的星期文本 | 从Sunday到Saturday |
| w | 年份中的第几周 | 如42:表示第42周 |
| YYYY | 四位数字完整表示的年份 | 如:2014 或 2000 |
| YY | 两位数字表示的年份 | 如:14 或 98 |
| A | 大写的AM PM | AM PM |
| a | 小写的am pm | am pm |
| HH | 小时,24小时制,有前导零 | 00到23 |
| H | 小时,24小时制,无前导零 | 0到23 |
| hh | 小时,12小时制,有前导零 | 00到12 |
| h | 小时,12小时制,无前导零 | 0到12 |
| m | 没有前导零的分钟数 | 0到59 |
| mm | 有前导零的分钟数 | 00到59 |
| s | 没有前导零的秒数 | 1到59 |
| ss | 有前导零的描述 | 01到59 |
| X | Unix时间戳 | 1411572969 |
如需了解更多关于Moment.js的信息,可访问其官方网站:http://momentjs.com/。
总结
本文介绍了JavaScript日期时间格式化的相关内容,更多相关技术文章请查阅本站历史文章或浏览后续内容,感谢大家的支持。