如何在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
相关产品推荐
相关产品推荐

