一、什么是日期格式化
在编程中,日期格式化是指将日期转换为特定格式的过程。在不同的国家和地区,日期的表示方法可能不一样,例如美国使用“月/日/年”的格式,而欧洲则常用“日/月/年”的格式。为了保证程序的可用性和易读性,我们需要将日期转换为统一的格式。
二、JavaScript内置日期对象
在JavaScript中,Date对象是内置的日期对象,可以通过它来表示和处理日期。可以使用new关键字创建一个Date对象,如下所示:
const today = new Date(); console.log(today); // 输出当前日期
输出结果:Wed Sep 29 2021 11:05:10 GMT+0800 (中国标准时间)
默认情况下,创建的Date对象表示当前日期和时间,可以通过各种方法来获得日期和时间的各个部分。
const year = today.getFullYear(); const month = today.getMonth() + 1; const day = today.getDate(); console.log(`${year}-${month}-${day}`); // 输出当前日期的年-月-日格式
输出结果:2021-9-29
三、格式化日期的技巧
1. 使用padStart方法对日期进行补零处理
当月份或日期小于10时,将会输出单个数字,这时我们需要对其进行补零处理。可以使用padStart方法在字符串前面补0,它的第一个参数指定字符串的总长度,第二个参数指定用于补齐的字符串。
const year = today.getFullYear(); const month = (today.getMonth() + 1).toString().padStart(2, '0'); const day = today.getDate().toString().padStart(2, '0'); console.log(`${year}-${month}-${day}`); // 输出当前日期的年-月-日格式(带前导零)
输出结果:2021-09-29
2. 使用数组和模板字符串拼接日期字符串
将年、月、日拼接成字符串的方法有很多种,其中使用数组结合模板字符串拼接的方法更加可读性强。
const dateArr = [ today.getFullYear(), (today.getMonth() + 1).toString().padStart(2, '0'), today.getDate().toString().padStart(2, '0') ]; console.log(`${dateArr.join('-')}`); // 输出当前日期的年-月-日格式(带前导零)
输出结果:2021-09-29
3. 使用字符串模板和replace方法格式化日期
使用字符串模板和replace方法可以更加灵活地格式化日期,可以自由组合日期显示格式。
const strTemplate = '现在是{year}年{month}月{day}日'; const replaceTemplate = str => str .replace(/{year}/, today.getFullYear()) .replace(/{month}/, (today.getMonth() + 1).toString().padStart(2, '0')) .replace(/{day}/, today.getDate().toString().padStart(2, '0')); console.log(replaceTemplate(strTemplate)); // 输出格式化后的日期字符串
输出结果:现在是2021年09月29日
四、完整代码示例
const today = new Date(); // 方法1:使用padStart方法对日期进行补零处理 const dateStr1 = `${today.getFullYear()}-${(today.getMonth() + 1).toString().padStart(2, '0')}-${today.getDate().toString().padStart(2, '0')}`; console.log(dateStr1); // 输出当前日期的年-月-日格式(带前导零) // 方法2:使用数组和模板字符串拼接日期字符串 const dateArr = [ today.getFullYear(), (today.getMonth() + 1).toString().padStart(2, '0'), today.getDate().toString().padStart(2, '0') ]; const dateStr2 = `${dateArr.join('-')}`; console.log(dateStr2); // 输出当前日期的年-月-日格式(带前导零) // 方法3:使用字符串模板和replace方法格式化日期 const strTemplate = '现在是{year}年{month}月{day}日'; const replaceTemplate = str => str .replace(/{year}/, today.getFullYear()) .replace(/{month}/, (today.getMonth() + 1).toString().padStart(2, '0')) .replace(/{day}/, today.getDate().toString().padStart(2, '0')); const dateStr3 = replaceTemplate(strTemplate); console.log(dateStr3); // 输出格式化后的日期字符串