您的位置:

用JavaScript格式化日期为年-月-日的技巧

一、什么是日期格式化

在编程中,日期格式化是指将日期转换为特定格式的过程。在不同的国家和地区,日期的表示方法可能不一样,例如美国使用“月/日/年”的格式,而欧洲则常用“日/月/年”的格式。为了保证程序的可用性和易读性,我们需要将日期转换为统一的格式。

二、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);  // 输出格式化后的日期字符串