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

如何编写JavaScript函数判断文件是否符合最近9点更新要求?

解决JavaScript文件修改时间判断的问题

我明白你遇到的问题了——你的函数在当前时间早于上午9点时,会错误地用当天的9点作为比较基准,而不是我们需要的前一天的9点,这就导致第一个场景返回了错误的结果。

问题分析

原代码里的d.setHours(9)不管当前时间是几点,都会把日期设置成当天的9点。比如当前是1月2日8:30,这个方法得到的是1月2日9:00,而文件修改时间是1月1日9:30,自然比这个时间小,所以返回了Fail,但我们实际需要的是和1月1日9:00比较。

修正后的函数

我们需要先判断当前时间是否已经过了当天9点,再决定“最近的9点”是当天还是昨天的:

function determine_if_file_has_been_updated_since_9AM(modified_date_time) {
  const now = new Date();
  let mostRecent9AM;

  // 判断当前时间是否已经过了当天9点
  if (now.getHours() >= 9) {
    // 过了9点,基准是当天9点
    mostRecent9AM = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 9, 0, 0, 0);
  } else {
    // 没到9点,基准是昨天9点
    mostRecent9AM = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1, 9, 0, 0, 0);
  }

  // 比较文件修改时间和基准时间
  return modified_date_time > mostRecent9AM ? 'Success' : 'Fail';
}

测试你的示例场景

  1. 场景1:当前时间2018年1月2日8:30
    • 因为当前时间早于9点,mostRecent9AM是2018年1月1日9:00
    • 文件修改时间2018年1月1日9:30 > 2018年1月1日9:00 → 返回Success,符合预期
  2. 场景2:当前时间2018年1月2日9:50
    • 当前时间过了9点,mostRecent9AM是2018年1月2日9:00
    • 文件修改时间2018年1月1日9:30 < 2018年1月2日9:00 → 返回Fail,符合预期

额外说明

  • 用new Date(year, month, day, hours, ...)的方式创建基准时间,比setHours更直观,也避免了修改原日期对象的副作用
  • 确保modified_date_time是一个Date对象或者可被Date解析的时间戳/字符串,否则比较会出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:34:21