javascript - 比较 JavaScript 对象数组中的 localeTimeString
问题描述
我正在检查当前时间是否介于时间数组之间。预期的结果是返回更接近当前时间的第一个时间。
const dateTimes = [{
value: '3:00:00 PM'
},
{
value: '4:00:00 PM'
},
{
value: '5:00:00 PM'
}
]
const currentTime = new Date().toLocaleTimeString();
const result = dateTimes.find(({
value
}) => currentTime > value)
console.log(result);
解决方案
这种方法取当前时间和对象时间之间的绝对差。
const dateTimes = [
{value: '3:00:00 PM'},
{value: '4:00:00 PM'},
{value: '5:00:00 PM'}
];
let currentTime = new Date().toLocaleTimeString();
let currentHour = parseInt(currentTime.split(":")[0]);
let currentMinutes = parseInt(currentTime.split(":")[1]);
let currentSeconds = parseInt(currentTime.split(":")[2]);
let dif = -1, closest = "";
dateTimes.forEach(function (e){
let hour = parseInt(e.value.split(":")[0]);
let minutes = parseInt(e.value.split(":")[1]);
let seconds = parseInt(e.value.split(":")[2].split(" ")[0]);
let stamp = e.value.split(":")[2].split(" ")[1];
hour = stamp == "PM" ? hour + 12 : hour;
let thisDif = Math.abs(hour * 3600 + minutes * 60 + seconds - (currentHour * 3600 + currentMinutes * 60 + currentSeconds));
if (dif < 0 || thisDif < dif) {
dif = thisDif;
closest = e.value;
}
});
console.log(closest);
推荐阅读
- hadoop - 网格计算环境中的 MapReduce 集成
- angular - Angular 复选框过滤不工作的产品
- swift4 - iOS11 Swift 4:存储从 DocumentBrowserViewController 检索的 URL 的访问权限
- python - 在cython的数组中查找整数索引
- php - 多个 JSON API 页面到单个 CSV 文件中
- php - Doctrine2 - 双左连接查询问题
- ios - Swift iOS -CollectionView 如何将单元格滚动到屏幕外
- r - 条形顶部的 R geom_bar 和 facet_grid 标签
- firebase - 如何将集合从 Mongodb 迁移到 Cloud Firestore
- reactjs - 我不明白为什么我的 propTypes 检查没有在这个类上运行