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

如何查找字符串中的日期并转换为dd/MM/YYYY等指定格式

字符串内嵌日期批量转换方案

完全可以实现,不需要复杂的第三方依赖,用正则匹配+定向格式化就能搞定,核心逻辑如下:

  • 匹配优先级:必须先处理带时间的日期格式,再处理纯年月日格式,避免纯日期规则提前截断带时间的日期内容,导致匹配失败
  • 纯年月日(YYYY-MM-DD)处理:用正则捕获4位年份、2位月份、2位日期三个分组,替换时按日/月/年顺序拼接,直接输出dd/MM/YYYY格式
  • 带时间日期(YYYY-MM-DDThh:mm 或 YYYY-MM-DDThh:mm:ss)处理:用正则捕获年、月、日、时、分、秒分组,秒位缺省就补00,最后按日/月/年 时:分:秒拼接,输出dd/MM/YYYY hh:mm:ss格式

以JavaScript实现为例,可直接运行的代码如下:

const rawStr = "startDate = '2018-03-21'; endDate = '2022-06-28'; lasttime = '2022-06-10T16:42' and name='Alex'";

// 第一步:替换带时间的日期
let converted = rawStr.replace(/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?/g, (_, year, month, day, hour, minute, second) => {
  return `${day}/${month}/${year} ${hour}:${minute}:${second || '00'}`;
});

// 第二步:替换纯年月日格式日期
converted = converted.replace(/(\d{4})-(\d{2})-(\d{2})/g, (_, year, month, day) => {
  return `${day}/${month}/${year}`;
});

console.log(converted);

运行后输出结果和预期完全一致:
startDate = '21/03/2018'; endDate = '28/06/2022'; lasttime = '10/06/2022 16:42:00' and name='Alex'

如果使用Python、Java等其他语言,只要复用上述匹配优先级、分组捕获重组的逻辑,替换为对应语言的正则API即可实现同样效果,不会对字符串内的非日期内容(比如示例中的name='Alex')产生误修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:21:13