如何在 React Native 中将字符串格式化为日期?

How to format a String to Date in React Native?

我正在从服务器 yyyyMMdd:hhmmss.

中以这种格式获取 Date 作为 String

是否有通用方法将此字符串格式化为 Date 对象?

编辑

 formatDate = (data) => {
    return data.slice(6, 8) + "." + data.slice(4, 6) + "." + data.slice(0, 4) + " " + data.slice(9, 11) + ":" + data.slice(11, 13)
}

您重新格式化字符串的方式很好,尽管它看起来像是一个小工作的大量代码,slice 非常快。一些替代方案(不一定"better",只是不同):

// Reformat yyyyMMdd:hhmmss as dd.mm.yyyy hh:mm:ss
function formatMatch(s) {
  let b = s.match(/\d\d/g) || [];
  return `${b[3]}.${b[2]}.${b[0]}${b[1]} ${b[4]}:${b[5]}:${b[6]}`;
}

function formatReplace(s) {
  return s.replace(/(\d{4})(\d{2})(\d{2}):(\d{2})(\d{2})(\d{2})/, '.. ::');
}

formatDate = (data) => {
    return data.slice(6, 8) + "." + data.slice(4, 6) + "." + data.slice(0, 4) + " " + data.slice(9, 11) + ":" + data.slice(11, 13)
}

let s = '20200323:123445';
console.log(formatDate(s));
console.log(formatMatch(s));
console.log(formatReplace(s));

如果您想获得一个实际的 Date 对象,那么不要使用这些位来创建另一个字符串,只需将它们传递给构造函数即可:

// Parse yyyyMMdd:hhmmss to Date object
function parseD(s) {
  let b = s.match(/\d\d/g) || [];
  return new Date(b[0]+b[1], b[2]-1, b[3], b[4], b[5], b[6]);
}

let s = '20200327:134523';
console.log(parseD(s).toString());

|| [] 的使用意味着如果没有匹配项,则会 return 编辑一个空数组,因此所有 b[*] 项 return 未定义 结果是无效日期。

上面用的是match,但是slice或者substring可以用同样的方法.