我无法获得两个日期之间的时差,无法计算出倒数计时器。我一直在关注许多不同的在线资源,但仍然无法正常工作。 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);
任何建议将不胜感激。
答案 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天(以重新渲染)更新本地组件状态,并返回清除功能以清除组件卸载时的间隔。