javascript - 关于javascript中日期函数的问题

标签 javascript node.js date react-native

我正在制作一个根据当前时间重新计算时间的函数。 timeShowToday 是每天的特定时间(设置为晚上 8:00)来揭示一些盲法答案。

_checkTime = () => {
    let timeNow = new Date();
    let timeShowToday = new Date(   //set at 8:00pm everyday
      timeNow.getFullYear(),
      timeNow.getMonth(),
      timeNow.getDate(),
      20,
      0
    );

    let timeShowYesterday = timeShowToday.setDate(timeShowToday.getDate() - 1);
    let timeDiff = timeShowToday.getTime() - timeNow.getTime();

    if (timeDiff < 0) {  //recalculate if current Time is past specific time(8:00pm) 
      let temp = new Date(
        timeNow.getFullYear(),
        timeNow.getMonth(),
        timeNow.getDate(),
        20,
        0
      );
      console.log(temp);
      timeShowYesterday = temp;
      timeShowToday = timeShowYesterday.setDate(
        timeShowYesterday.getDate() + 1
      );
      console.log(timeShowYesterday);
    }

这里的问题是变量 temp 和 timeShowYesterday 具有不同的日期时间,即使我刚刚将 temp 分配给 timeShowYesterday。这是我在控制台记录时得到的日志:

05-03 00:26:59.623 ReactNativeJS: temp: Fri May 03 2019 20:00:00 GMT+0900
05-03 00:26:59.623 ReactNativeJS: timeShowYesterday: Sat May 04 2019 20:00:00 GMT+0900

如您所见,temp 正确记录了当前时间,但 timeShowYesterday 多了 1 天。我不知道为什么会出现这种情况,因为我所做的只是将 temp 分配给 timeShowYesterday 。

我错过了什么吗? 谢谢

最佳答案

您似乎假设 setDate 创建一个新日期而不更改原始日期。它不是。相反,它只是修改日期对象并返回一个自引用。

它的用法是这样的:

  date.setDate(10);
  date.setMinutes(10);

可以更优雅地写为:

  date.setDate(10).setMinutes(10);

如果你想创建两个独立的日期,你必须copy the date :

  const copy = new Date(oldDate);

关于javascript - 关于javascript中日期函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55955829/

相关文章:

javascript - 如何使用回调将 cucumber 测试标记为 Node 中的待处理

Javascript 的调用堆栈和执行顺序

android - node.js 返回 null 推送消息

javascript - JavaScript 中的日期问题

php - 将一天添加到日期

python - 如何计算日期列表中的连续天数

javascript - 为什么这个模板助手会产生错误但仍然有效?

javascript - 鼠标离开时停止每个循环

node.js - 如何避免重新映射通过无服务器框架从 Lambda 传回 API 网关的 header ?

javascript - 如何使用 Node.js Selenium Chrome 驱动程序设置文件下载目录