两个JavaScript日期之间的时差

时间:2020-08-29 23:33:45

标签: javascript reactjs date jsx

我无法获得两个日期之间的时差,无法计算出倒数计时器。我一直在关注许多不同的在线资源,但仍然无法正常工作。 daysDiff没有显示在屏幕上。这是我的代码:

const currentDate = (new Date).toUTCString();
const futureDate = new Date(2028, 0, 1, 12, 0, 0);
const diff = futureDate.getTime() - currentDate.getTime();
const daysDiff = diff / (1000 & 60 * 60 * 24);

const render = () => {
    ReactDOM.render(
        React.createElement(
            "div",
            null,
            React.createElement('pre', null, daysDiff.toString()),
        ),
        document.getElementById('CarbonClock'),
    );
}

setInterval(render, 1000);

任何建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以使用Date javascript本机对象执行此操作,也可以使用moment。如果您要进行大量的日期操作,我建议您使用“时刻”。这只是另一个选项,因为已经提供了日期选项

您可以在许多格式中找到不同之处,但这是从提供的资源中在代码中使用的快速示例

 const future= moment([2028, 0, 1, 12, 0, 0]);
 const current = moment();
 const diffDays = future.diff(current, 'days');

这里是一个示例,提供了所有类型的方法来初始化矩对象和创建差异。

   moment(Moment|String|Number|Date|Array)
     .diff(Moment|String|Number|Date|Array);   

资源:

https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/07-difference/

答案 1 :(得分:0)

问题

  • currentDate必须是JS Date对象,才能在其上调用getTime
  • 差异计算中的错别字,应为diff / (1000 * 60 * 60 * 24)

示例解决方案

import React, { useEffect, useState } from "react";

export default function App() {
  const computeDiff = () => {
    const currentDate = new Date();
    const futureDate = new Date(2028, 0, 1, 12, 0, 0);
    const diff = futureDate.getTime() - currentDate.getTime();
    return diff / (1000 * 60 * 60 * 24);
  };
  const [daysDiff, setDaysDiff] = useState(computeDiff());

  useEffect(() => {
    const timerId = setInterval(() => {
      setDaysDiff(computeDiff());
    }, 1000);

    return () => clearInterval(timerId);
  }, []);


  return <pre>{daysDiff.toString()}</pre>;
}
  • computeDiff是一个具有因子逻辑的函数,用于计算和返回日差。
  • useEffect挂钩将开始更新间隔,以使用diff天(以重新渲染)更新本地组件状态,并返回清除功能以清除组件卸载时的间隔。

Edit time-difference-between-two-javascript-dates