方法一:使用toLocaleString
或toLocaleDateString
/toLocaleTimeString
Date
对象提供了toLocaleString()
、toLocaleDateString()
和toLocaleTimeString()
方法,这些方法允许你根据本地时间格式来显示日期和时间。虽然它们不直接提供高度自定义的格式选项,但对于大多数本地化需求来说已经足够。
let date = new Date(); // 使用本地格式显示完整的日期和时间
console.log(date.toLocaleString()); // 仅显示日期
console.log(date.toLocaleDateString()); // 仅显示时间
console.log(date.toLocaleTimeString()); // 也可以指定语言和选项
console.log(date.toLocaleString('zh-CN', { year: 'numeric', month: 'long', day: 'numeric' }));
方法二:手动格式化
对于需要高度自定义时间格式的场景,你可能需要手动编写函数来格式化时间。这通常涉及到从Date
对象中提取年、月、日、时、分、秒等,然后按照指定的格式拼接这些值。
function formatDate(date, format = 'yyyy-MM-dd HH:mm:ss') { let year = date.getFullYear(); let month = String(date.getMonth() + 1).padStart(2, '0'); let day = String(date.getDate()).padStart(2, '0'); let hour = String(date.getHours()).padStart(2, '0'); let minute = String(date.getMinutes()).padStart(2, '0'); let second = String(date.getSeconds()).padStart(2, '0'); let obj = { 'M+': month, // 月份 'd+': day, // 日 'h+': hour, // 小时 'm+': minute, // 分 's+': second, // 秒 'yyyy': year, // 年份 'MM': month, 'dd': day, 'HH': hour, 'mm': minute, 'ss': second }; for (let k in obj) { if (new RegExp(`(${k})`).test(format)) { format = format.replace(RegExp.$1, (RegExp.$1.length === 1) ? (obj[k]) : (('00' + obj[k]).substr(('' + obj[k]).length))); } } return format;
} let date = new Date();
console.log(formatDate(date, 'yyyy-MM-dd HH:mm:ss'));
方法三:使用第三方库
使用Moment.js
// 首先需要引入moment.js
// <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script> let date = new Date();
console.log(moment(date).format('YYYY-MM-DD HH:mm:ss'));
使用date-fns
// 首先需要安装date-fns
// npm install date-fns import { format } from 'date-fns'; let date = new Date();
console.log(format(date, 'yyyy-MM-dd HH:mm:ss'));