Files
fe_service_ebtp_frontend/src/pages/Auction/AuctionViewAuctions/components/CountDownUtils.tsx
2022-03-10 14:24:13 +08:00

75 lines
2.9 KiB
TypeScript

/*
* @Author: liqiang
* @Date: 2021-02-26 09:38:47
* @LastEditTime: 2021-03-17 16:45:47
* @LastEditors: Please set LastEditors
* @Description: 根据传入的毫秒值倒计时
* @FilePath: \ebtp-cloud-frontend\src\pages\Auction\AuctionViewAuctions\components\CountDownUtils.tsx
*/
import React, { useEffect, useRef, useState } from 'react';
interface CountDownUtilsItem {
countDown: number | null,
countDownOver: () => void
}
const sixty = 60;
const threeThousandAndSixHundred = 3600;
const twentyFour = 24;
const hourSeconds = twentyFour * threeThousandAndSixHundred;
const ten = 10;
const CountDownUtils: React.FC<CountDownUtilsItem> = (props) => {
const { countDown, countDownOver } = props;
const [time, setTime] = useState<string>();
const ref = useRef<any>();
useEffect(() => {
if (countDown === null) {
return;
}
let maxtime = countDown / 1000; //按秒计算
clearInterval(ref.current);
const interval = setInterval(() => {
// if (maxtime >= 0) {
// //计算出相差天数
// let days = Math.floor(maxtime / hourSeconds);
// //计算出小时数
// let leave1 = maxtime % hourSeconds; //计算天数后剩余的秒数
// let hours = Math.floor(leave1 / threeThousandAndSixHundred);
// //计算相差分钟数
// let leave2 = leave1 % threeThousandAndSixHundred; //计算小时数后剩余的秒数
// let minutes = Math.floor(leave2 / sixty);
// //计算相差秒数
// let leave3 = leave2 % sixty; //计算分钟数后剩余的秒数
// let seconds = Math.round(leave3);
// setTime(days + '天 ' + hours + '小时 ' + minutes + '分钟 ' + seconds + ' 秒');
// --maxtime;
// } else {
// clearInterval(interval);
// //倒计时结束时,触发父组件的方法
// countDownOver();
// }
if (maxtime >= 0) {
let ts = maxtime;//计算剩余的毫秒数
let dd = parseInt(String(ts / sixty / sixty / twentyFour), ten);//计算剩余的天数
let hh = parseInt(String(ts / sixty / sixty % twentyFour), ten);//计算剩余的小时数
let mm = parseInt(String(ts / sixty % sixty), ten);//计算剩余的分钟数
let ss = parseInt(String(ts % sixty), ten);//计算剩余的秒数
setTime(dd + '天 ' + hh + '小时 ' + mm + '分钟 ' + ss + ' 秒');
--maxtime;
} else {
clearInterval(ref.current);
//倒计时结束时,触发父组件的方法
countDownOver();
}
}, 1000);
ref.current = interval;
}, [countDown]);
return (
<>
{time}
</>
)
}
export default CountDownUtils;