如何从 Javascript 上的 ISO 日期中删除秒和毫秒

问题描述

我有日期时间“2021-05-26T06:19:45.854Z”,我想删除秒和毫秒。 所需的结果将类似于“2021-05-26T06:19:00.000Z”或“2021-05-26T06:19Z”

我设法使用 replace() 方法删除了毫秒,但无法删除

let ts = "2021-05-26T06:19:45.854Z";
  console.log(ts);
  ts = ts.replace(/\.\d+/,"");
  console.log(ts)

感谢您抽出时间回复

解决方法

一种选择是将日期视为 string...

const ts = "2021-05-26T06:19:45.854Z";
const result = ts.substring(0,19) + ':00.000Z'; // '2021-05-26T06:19:45:00.000Z'
,

考虑到日期总是ISO 8601,你可以用这个提取所需的部分:

const date = "2021-05-26T06:19:45.854Z";

const regex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/;

const [match] = regex.exec(date);

console.log(match);

,

可能有点笨拙,但由于 ISO 日期已正确标准化,您只需创建一个子字符串并附加时区信息:

function stripSeconds(isoDate) {
    return isoDate.substring(0,16) + isoDate.substr(23);
}

示例:

let full = "2021-05-26T06:19:45.854Z";
let modified = full.substring(0,16) + full.substr(23)
console.log(modified);

,

试试这个,希望有帮助,

let ts = "2021-05-26T06:19:45.854Z";
console.log(ts);
  let d = new Date(ts);
  d.setSeconds(0,0);
  console.log(d.toISOString());
,

您可以使用 slicelastIndexOf

轻松获取字符串

const str = "2021-05-26T06:19:45.854Z";

const result = `${str.slice(0,str.lastIndexOf(":"))}Z`;
console.log(result);

,

如果您不想要字符串操作:

const timeStr="2021-05-26T06:19:45.854Z";
const dateFromStr = new Date(timeStr)
const dateHours = dateFromStr.getHours()
dateFromStr.setHours(dateHours)
dateFromStr.setSeconds(0)
dateFromStr.setMilliseconds(0)
const dateISO = dateFromStr.toISOString()

const div = document.body.querySelector('#test')
div.textContent= dateISO
<div id='test'></div>