如何在JavaScript中查找剩余秒数或超过最近的小时数?

如何在JavaScript中查找剩余秒数或超过最近的小时数?,javascript,time,Javascript,Time,如何找出Javascript中给定时间戳的秒数到最近的小时数 示例:(时间戳的格式不重要) 是否有任何JS内置函数或moment.JS函数可以找到这些值?您必须从时间戳中提取分和秒,然后将它们转换为秒,并取到下一个小时之前的总秒数与当前打开的总秒数之间的最小值“显示” const A=`2019-09-2515:58:59`; 常数B=`2019-09-2517:00:59`; 常量模式=/\d{2}:(\d{2}):(\d{2})/; 常数计算时间=(时间戳)=>{ 常量[3;,分钟,秒]=

如何找出Javascript中给定时间戳的秒数最近的小时数

示例:(时间戳的格式不重要)


是否有任何JS内置函数或moment.JS函数可以找到这些值?

您必须从时间戳中提取分和秒,然后将它们转换为秒,并取到下一个小时之前的总秒数与当前打开的总秒数之间的最小值“显示”

const A=`2019-09-2515:58:59`;
常数B=`2019-09-2517:00:59`;
常量模式=/\d{2}:(\d{2}):(\d{2})/;
常数计算时间=(时间戳)=>{
常量[3;,分钟,秒]=时间戳匹配(模式);
常量向前=(60-数字(分钟)-1)*60+(60-数字(秒));
常数向后=数字(分钟)*60+数字(秒);
返回Math.min(向前、向后);
}
console.log(A,计算小时(A));

console.log(B,calcTimeToHour(B));
除了更简单地获取自上一个小时以来经过的秒数之外,您并不需要momentJS或DateTime来完成此操作-这只是数学:

函数二次stonearesthour(dt){
const secondsSinceHour=dt.unix()%3600;//或者如果愿意,您可以编写稍微笨拙的const secondsSinceHour=((dt.minutes()*60)+dt.seconds());

return(secondsSinceHour您也可以使用纯Javascript,使用
Date.parse
将时间字符串转换为毫秒。然后您可以使用
1800-Math.abs(sec-1800)
进行最接近的小时计算:

const A='2019-09-2515:58:59';
常数B='2019-09-2517:00:59';
const timeToNearestHour=(datetime)=>{
const sec=Date.parse(datetime+'Z')/1000%3600;
返回1800-数学abs(第1800节);
}
console.log(A,timeToNearestHour(A));

console.log(B,timeToNearestHour(B));
以秒为单位获取当前时间。从
3600
计算模数。如果结果小于1800,则为答案。如果结果大于1800,则从3600中减去。
2019-09-25 15:58:59 //output: 61

2019-09-25 17:00:59 //output: 59