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

如何实现与Scratch完全一致的JavaScript「Days Since 2000」函数?

实现与Scratch一致的「Days Since 2000」函数

你的代码和Scratch结果存在差异的核心原因是时区处理:原代码中new Date(2000, 0, 1)会创建本地时区的2000年1月1日00:00:00对应的UTC时间戳,而Scratch的计算基准是UTC时区的2000年1月1日00:00:00,时区偏移会导致结果偏差。

以下是修正后的代码,完全对齐Scratch的计算逻辑:

function daysSince2000() {
  // 基于UTC时区创建2000年1月1日00:00:00的基准时间
  const utcEpoch = new Date(Date.UTC(2000, 0, 1));
  // 计算当前UTC时间戳与基准时间戳的差值,转换为天数(含小数)
  return (new Date().getTime() - utcEpoch.getTime()) / 86400000;
}

console.log("Days since 2000: " + daysSince2000());

关键说明

  • Date.UTC(2000, 0, 1)直接生成UTC时区下2000年1月1日00:00:00的时间戳,以此作为基准点完全匹配Scratch的定义。
  • new Date().getTime()返回的是当前时间的UTC毫秒数,确保时间差计算基于UTC时区,消除本地时区的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 03:42:13