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

标签 javascript date 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 速度相当快。一些替代方案(不一定“更好”,只是不同):

// 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})/, '$3.$2.$1 $4:$5:$6');
}

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());

||的使用[] 表示如果没有匹配项,则返回一个空数组,因此所有 b[*] 项都返回 undefined 并且结果是无效日期。

上面使用了match,但是slicesubstring也可以以同样的方式使用。

关于javascript - 如何在 React Native 中将字符串格式化为日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60816624/

相关文章:

java - 如果推送通知包含特定元素,则隐藏它

JavaScript 对象与数组

javascript - 找到缺失的关卡并填充它

java - 这些时间我应该使用什么类型的小数格式?

javascript - 在日期更改时触发函数

react-native - 使用 Hook 以编程方式更新功能组件中的 react 导航标题标题

javascript - 禁用 Chrome 网络安全后 CORS 仍然强制执行吗?

javascript - 尽管支持 ISO 8601 日期格式,但 IE11 中的日期无效

java - 使用 Java 查询 MongoDb 的日期范围

javascript - React Native 如何将 map 置于用户位置中心