📌  相关文章
📜  如何在 JavaScript 中从 dd-mmm-yyyy 格式的字符串中提取日期?(1)

📅  最后修改于: 2023-12-03 15:38:17.465000             🧑  作者: Mango

如何在 JavaScript 中从 dd-mmm-yyyy 格式的字符串中提取日期?

在 JavaScript 中,我们可以使用 Date 对象来操作日期和时间。如果你有一个格式为 dd-mmm-yyyy 的字符串,需要将其转换为 Date 对象,可以按以下步骤进行:

  1. 使用 split 方法将字符串分割为三个部分:日、月、年。
const dateString = '01-Jan-2022';
const dateParts = dateString.split('-'); // ['01', 'Jan', '2022']
  1. 将月份部分转换为数字。可以创建一个对象来对应月份的名称和数字。
const monthNames = {
  Jan: 0,
  Feb: 1,
  Mar: 2,
  Apr: 3,
  May: 4,
  Jun: 5,
  Jul: 6,
  Aug: 7,
  Sep: 8,
  Oct: 9,
  Nov: 10,
  Dec: 11
};

const monthIndex = monthNames[dateParts[1]];

注意:由于 Date 对象中的月份是从 0 开始计数的,因此需要将月份对应的数字减 1。

  1. 使用 Date.UTC 方法创建日期对象。
const dateObject = new Date(Date.UTC(dateParts[2], monthIndex, dateParts[0]));

最后,dateObject 将是一个正确的 Date 对象,代表指定的日期。

完整的代码示例:

const dateString = '01-Jan-2022';
const dateParts = dateString.split('-');

const monthNames = {
  Jan: 0,
  Feb: 1,
  Mar: 2,
  Apr: 3,
  May: 4,
  Jun: 5,
  Jul: 6,
  Aug: 7,
  Sep: 8,
  Oct: 9,
  Nov: 10,
  Dec: 11
};

const monthIndex = monthNames[dateParts[1]];
const dateObject = new Date(Date.UTC(dateParts[2], monthIndex, dateParts[0]));

console.log(dateObject); // Fri Jan 01 2022 08:00:00 GMT+0800 (China Standard Time)

上面的代码中,Date.UTC 方法会返回一个以协调世界时 (UTC) 表示的时间戳(从 1970 年 1 月 1 日 00:00:00 UTC 开始计算,单位为毫秒),然后再使用 new Date 创建一个本地时间的 Date 对象。如果需要获取 UTC 时间,可以直接使用 Date.UTC 方法返回的时间戳。