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

如何在JavaScript中从datetime变量拆分日期与时间

如何在JavaScript中从datetime变量拆分日期与时间?

嘿,咱们来拆解这个问题!首先先看看你写的代码:

var d ={ "title": "q", "message": "q", "date_time": "March 28, 2018 7:12 PM", "user_id": "5abb6c929d5b611b01875e9b" }
var s = d.date_time.split(',')
console.log(s)

这段代码运行后会输出 ["March 28", " 2018 7:12 PM"]——它确实把字符串在逗号位置切开了,但并没有得到你想要的完整日期(March 28, 2018)和独立时间(7:12 PM),只能算完成了一半。下面给你几个更靠谱的实现方案:

方案1:用JavaScript Date对象(最推荐)

利用原生Date对象处理日期时间是最稳妥的方式,它能自动解析标准格式的字符串,还能灵活控制输出格式:

var d = { 
  "title": "q", 
  "message": "q", 
  "date_time": "March 28, 2018 7:12 PM", 
  "user_id": "5abb6c929d5b611b01875e9b" 
};

// 把datetime字符串转换成Date对象
const dateObj = new Date(d.date_time);

// 提取日期部分,自定义格式为「月份 日期, 年份」
const datePart = dateObj.toLocaleDateString('en-US', {
  year: 'numeric',
  month: 'long',
  day: 'numeric'
});

// 提取时间部分,自定义格式为「小时:分钟 AM/PM」
const timePart = dateObj.toLocaleTimeString('en-US', {
  hour: '2-digit',
  minute: '2-digit',
  hour12: true
});

console.log('日期:', datePart); // 输出 "March 28, 2018"
console.log('时间:', timePart); // 输出 "7:12 PM"

这种方法的优势是兼容性强,哪怕datetime字符串格式有小变化(比如换成2018-03-28T19:12:00),Date对象也能正确解析。

方案2:正则表达式(适合固定格式场景)

如果你能确定datetime字符串的格式永远是「Month Day, Year Time」,可以用正则表达式精准匹配拆分:

var d = { 
  "title": "q", 
  "message": "q", 
  "date_time": "March 28, 2018 7:12 PM", 
  "user_id": "5abb6c929d5b611b01875e9b" 
};

// 正则规则:匹配「月份 日期, 年份」和「小时:分钟 上午/下午」两部分
const dateTimeRegex = /^([A-Za-z]+ \d+, \d{4}) (\d+:\d+ [APM]{2})$/;
const matchResult = d.date_time.match(dateTimeRegex);

if (matchResult) {
  const datePart = matchResult[1];
  const timePart = matchResult[2];
  console.log('日期:', datePart); // "March 28, 2018"
  console.log('时间:', timePart); // "7:12 PM"
}

方案3:基于你的代码优化(仅适合固定格式)

如果想在你原有代码的基础上改进,可以这样调整:

var d = { 
  "title": "q", 
  "message": "q", 
  "date_time": "March 28, 2018 7:12 PM", 
  "user_id": "5abb6c929d5b611b01875e9b" 
};

var s = d.date_time.split(',');
// 拼接日期部分:第一部分(月份+日期) + 逗号 + 第二部分里的年份
const datePart = `${s[0].trim()}, ${s[1].split(' ')[1].trim()}`;
// 提取时间部分:第二部分里的小时分钟和AM/PM
const timePart = s[1].split(' ').slice(2).join(' ').trim();

console.log('日期:', datePart); // "March 28, 2018"
console.log('时间:', timePart); // "7:12 PM"

不过这种方法完全依赖字符串的固定格式,一旦格式改变(比如年份位置变化、时间格式改成24小时制)就会失效,所以只推荐在格式绝对固定的场景下使用。

内容的提问来源于stack exchange,提问作者Rajesh Kumar J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:45:54