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

如何检查字符串格式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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:52:02