gpt4 book ai didi

JavaScript 循环遍历 Json 日期

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:22 26 4
gpt4 key购买 nike

我正在尝试使用 JavaScript 循环遍历具有时间段(开始日期/时间和结束日期/时间)的 json 文件,并检查现在(当前日期时间)是否位于此类列表中的任何时间段之间。

以下是我的代码,但找不到我错的地方。有帮助吗?

<html>
<script type="text/javascript">
var data = {
"period": {
"startend": [{
"startDate": "2015-11-17 15:43:37",
"endDate": "2015-11-18 19:43:37"
}, {
"startDate": "2015-12-17 19:43:37",
"endDate": "2016-01-17 19:43:37"
}, {
"startDate": "2015-04-17 19:43:37",
"endDate": "2015-04-18 19:43:37"
}]
}
}

var periodArray = data.period.startend;
var curDate = new Date();
var datetime = curDate.getFullYear() + '-' + curDate.getMonth() + '-' + curDate.getDate() + ' ' + curDate.getHours() + ':' + curDate.getMinutes() + ':' + curDate.getSeconds();

for (i = 0; i < periodArray.length ; i++) {
var obj = periodArray[i]
if (datetime > obj.startDate && datetime < obj.endDate){
alert('Falls within period');
} else {
alert('Not within any period');
}
}
</script>

最佳答案

基本思想是将日期字符串转换为实际的 Date 对象,以便将它们与当前日期进行比较 (new Date())。让我们首先定义一个辅助函数,该函数在初始化时关闭当前日期,生成一个函数,该函数采用字符串或日期形式的开始日期和结束日期,并且当且仅当关闭当前日期时才返回 true在范围内。

定义。

// () -> (([String|Date] * [String|Date]) -> Boolean)
// When initialized, closes over the current date and returns
// a predicate on String or Date objects.
function includesNow() {
var curDate = new Date();
return function(start, end) {
var startDate = (typeof start === "string")
? new Date(start) : start;
var endDate = (typeof end === "string")
? new Date(end) : end;
return (curDate > startDate) && (curDate < endDate);
};
}

用法。

借助辅助函数,我们可以很容易地过滤“当前”日期:

// Get the list of (date string) objects.
var allDates = data.period.startend;

// Capture the current date, returning the date range comparator.
var comparator = includesNow();

// Get the list of those (date string) objects `obj`
// that satisfy `comparator(obj.startDate, obj.endDate) === true`.
var currentDates = allDates.filter(function(obj) {
return comparator(obj.startDate, obj.endDate);
});

// This is a function of current date, so will be empty at some point.
currentDates[0];
// => Object {startDate: "2015-11-17 15:43:37", endDate: "2015-11-18 19:43:37"}

如果您知道您的对象将始终是字符串而不是实际的日期对象,那么您可以大大简化 includesNow。如果您对封闭范围感兴趣,请务必分别将 > 和 < 替换为 ≥ 和 ≤。

关于JavaScript 循环遍历 Json 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33769954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com