You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中不使用moment库格式化时间字符串的方法

不用Moment.js实现React Native时间格式化

没问题!不用依赖Moment.js的话,咱们完全可以利用JavaScript原生的Date对象和Intl.DateTimeFormat API来实现你要的格式——React Native对这两个原生API的支持很完善,不用担心兼容性问题。

下面是一个直接可用的函数,我会一步步解释逻辑:

const formatDateToCustomStyle = (dateString) => {
  // 第一步:把数据库返回的时间字符串转换成Date对象
  const date = new Date(dateString);
  
  // 处理无效的时间字符串(避免报错)
  if (isNaN(date.getTime())) {
    return 'Invalid Date'; // 你可以换成自己需要的默认值
  }

  // 第二步:配置时间部分的格式(12小时制+分钟+AM/PM)
  const timeFormatter = new Intl.DateTimeFormat('en-US', {
    hour: 'numeric',
    minute: '2-digit',
    hour12: true
  });

  // 第三步:配置日期部分的格式(日 + 月份缩写,比如17 Oct)
  const dateFormatter = new Intl.DateTimeFormat('en-GB', {
    day: '2-digit',
    month: 'short'
  });

  // 分别格式化后拼接成目标格式
  const formattedTime = timeFormatter.format(date);
  const formattedDate = dateFormatter.format(date);

  return `${formattedTime}, ${formattedDate}`;
};

// 调用示例
const dbDate = "2018-10-17 14:52:52";
console.log(formatDateToCustomStyle(dbDate)); // 输出:2:52 PM, 17 Oct

关键细节说明:

  • Intl.DateTimeFormat:这是浏览器/React Native原生支持的国际化时间格式化API,比第三方库更轻量且性能更好。
  • 时间部分用en-US locale是因为它默认支持12小时制的AM/PM格式;日期部分用en-GB是因为它的日期顺序是「日-月」,正好符合你要的17 Oct格式。
  • 加入了无效时间的判断,避免因数据库返回异常数据导致应用崩溃。

如果需要调整格式细节(比如月份全拼、小时补零等),只需要修改Intl.DateTimeFormat的配置参数即可,比如把hour: 'numeric'改成hour: '2-digit'会得到02:52 PM的效果。

内容的提问来源于stack exchange,提问作者serene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:04:09