如何检查字符串格式datetime是否为正午及筛选数组中12:00:00的对象
嘿,这两个问题我刚好有经验,给你详细说下解决方案:
1. 检查字符串格式的日期时间是否为正午(12:00:00)
这里有两种实用方法,你可以根据场景选择:
直接截取时间部分对比(推荐格式固定时用)
你的日期字符串是"YYYY-MM-DD HH:mm:ss"这种固定格式,时间部分刚好在空格之后,直接拆分字符串取后8位和"12:00:00"对比就行,简单高效还没时区问题:function isNoon(datetimeStr) { const timePart = datetimeStr.split(' ')[1]; return timePart === '12:00:00'; } // 测试示例 console.log(isNoon("2019-11-29 12:00:00")); // true console.log(isNoon("2019-11-29 3:00:00")); // false转换为Date对象验证(适合格式不固定或需严谨校验时)
如果担心字符串格式可能有变化,或者需要结合日期做更多操作,可以转成Date对象后校验小时、分钟、秒:function isNoon(datetimeStr) { const date = new Date(datetimeStr); // 注意时区:如果字符串是本地时间用getHours(),UTC时间用getUTCHours() return date.getHours() === 12 && date.getMinutes() === 0 && date.getSeconds() === 0; }👉 小提醒:不同环境下Date解析字符串的行为可能有差异,要是你的日期字符串带时区标识,记得对应调整获取时间的方法哦。
2. 筛选数组中时间为12:00:00的对象
基于上面的方法,用数组的filter方法就能快速筛选出符合条件的对象,直接上代码:
方法一(基于字符串截取)
const data = [ {dt: "2019-11-29 12:00:00"}, {dt: "2019-11-29 3:00:00"}, {dt: "2019-11-29 6:00:00"}, {dt: "2019-11-30 12:00:00"}, {dt: "2019-11-30 6:00:00"} ]; const noonItems = data.filter(item => { const timePart = item.dt.split(' ')[1]; return timePart === '12:00:00'; }); console.log(noonItems); // 输出结果: // [{dt: "2019-11-29 12:00:00"}, {dt: "2019-11-30 12:00:00"}]
方法二(基于Date对象校验)
如果需要用Date对象的逻辑,替换filter里的判断即可:
const noonItems = data.filter(item => { const date = new Date(item.dt); return date.getHours() === 12 && date.getMinutes() === 0 && date.getSeconds() === 0; });
内容的提问来源于stack exchange,提问作者MOFD
相关产品推荐
相关产品推荐

