繁体   English   中英

如何使用momentjs从数组中找到最接近当前时间的时间?

[英]How to find the closest time to the current time from an array using momentjs?

我有一个值数组[180, 360, 540, 720, 900, 1080, 1260] 每个数组项都描述了午夜UTC之后的分钟数。

使用momentjs ,我如何找到最接近当前'Europe/London'时间的数组项?

到目前为止,我已经能够使用moment-timezone.js获得当前的'Europe/London'时间:

var currentTime = moment().tz('Europe/London');

但我现在正在努力寻找最接近currentTime数组项。

尝试这个

var x= [180, 360, 540, 720, 900, 1080, 1260]

closestTime=500
var newar=[]

for(i=0;i<x.length;i++){
newar.push(Math.abs(closestTime-x[i]))
}

var i = newar.indexOf(Math.min.apply(Math, newar));
console.log(x[i])

如果可能的话,您应该保留UTC中的值,直到您准备好格式化为止。 时区以及日期格式通常是本地化的一部分,而不是您希望在业务逻辑中深入嵌入的内容。 请注意,有时区改变了他们当地的时间流,这对每个人来说都是一场噩梦。

使用UTC中的传入数据和比较数据,您只需按绝对差异对数组进行排序:

 var now = moment.utc(); var target = now.hours() * 60 + now.minutes(); var data = [180, 360, 540, 720, 900, 1080, 1260] var sorted = data.sort(function(a, b) { var dA = Math.abs(a - target), dB = Math.abs(b - target); if (dA < dB) { return -1; } else if (dA > dB) { return 1; } else { return 0; } }); document.getElementById('r').textContent = JSON.stringify(sorted); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.2/moment.min.js"></script> <pre id="r"></pre> 

然后第一个元素将是最接近的,其次是距离的顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM