使用 javascript 获取仅在日期范围内显示的数据
Getting data to only show within a date range using javascript
我正在尝试显示日历日期内的一些数据。我给它一个开始日期和一个结束日期。我只希望它在那些日期内显示。我一直在尝试这样做,但我似乎无法使其正常工作。我以为我有它,但错了。
var objData = [];
var month = [ "january","february","march", "april", "may", "june", "july", "august", "september", "October", "november", "december"];
var d = new Date( );
var currDate = d.getDate();
var currMonth = d.getMonth();
var currYear = d.getFullYear();
var currPromoIndex;
for (var i =0; i < obj.length; i++)
{
var start = obj[i].dateRange[0];
var end = obj[i].dateRange[1];
var promoStartMonth = start.slice( 0,2 ).replace("/", "");
var promoStartDay = start.slice( start.indexOf("/"), start.length ).replace("/", "");
var promoEndMonth = end.slice( 0,2 ).replace("/", "");
var promoEndDay = end.slice( end.indexOf("/"), end.length ).replace("/", "");
var myPromoStart = new Date( currYear, promoStartMonth-1, promoStartDay);
var myPromoEnd = new Date( currYear, promoEndMonth-1, promoEndDay);
if ( ( ( d > myPromoStart ) && ( d < myPromoEnd) ) || ( d >= myPromoEnd ) )
{
objData = obj[i];
console.log(obj[i]);
}
}
我的日期范围存储在 json 中,如下所示。
"dateRange" : [ "4/13", "5/12" ],...
我不确定还能怎么做,因为我尝试了许多不同的方法,但似乎没有什么相应的工作。
目前还不清楚数据对象的实际外观,"JSON"无效。
您似乎已经开了个好头,但在将范围转换为日期时迷失了方向。
var objData = [];
var month = [ "january","february","march", "april", "may", "june", "july", "august", "september", "October", "november", "december"];
不使用 month 变量,因此没有必要。下一部分似乎还可以:
var d = new Date( );
var currDate = d.getDate();
var currMonth = d.getMonth();
var currYear = d.getFullYear();
var currPromoIndex;
for (var i =0; i < obj.length; i++) {
我假设obj[i].dateRange
是["4/13", "5/12"]
.
var start = obj[i].dateRange[0];
var end = obj[i].dateRange[1];
var promoStartMonth = start.slice( 0,2 ).replace("/", "");
var promoStartDay = start.slice( start.indexOf("/"), start.length ).replace("/", "");
如果使用正则表达式并拆分,则从范围值中提取月份和日期会更简单:
var start = obj[i].dateRange[0].split(/'D/);
var end = obj[i].dateRange[1].split(/'D/);
var promoStartMonth = start[0];
var promoStartDay = start[1];
var promoEndMonth = end[0];
var promoEndDay = end[1];
下一点是确定的:
var myPromoStart = new Date( currYear, promoStartMonth-1, promoStartDay);
var myPromoEnd = new Date( currYear, promoEndMonth-1, promoEndDay);
但是这里的逻辑是有缺陷的(并且有太多的括号,不容易阅读):
if (((d > myPromoStart) && (d < myPromoEnd)) || (d >= myPromoEnd)) {
为什么||
?这将包括myPromoEnd之后的所有日期。如果您希望范围包含结束日期,请使用(并删除大部分括号):
if (d >= myPromoStart && d <= myPromoEnd) {
然后您遇到以下问题:
objData = obj[i];
这将 objData 的值替换为 obj[i],您可能希望将其添加到数组中,因此:
objData.push(obj[i]);
试试这个for (var i =0; i < Object.keys(obj).length ; i++)
您无法仅使用 .length
获取对象的大小。以及 RobG 所说的,您需要使用 .push() 将对象添加到数组中。希望这有帮助:
https://jsfiddle.net/geradrum/c2xkntsh/
相关文章:
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 如何使用D3生成特定范围内的随机颜色
- 将自定义css保持在角度范围内
- Angular JS-文本框未在独立范围内更新
- cookie不在网站范围内
- 获取给定JavaScript范围内的解析函数
- 如何在JavaScript中使用此函数对范围内的所有数字求和
- JavaScript-仅验证数值并且在范围内
- 选择随机图像,检查是否在特定范围内并相应显示
- jQuery:检索日期选择器日期,检查是否在日期范围内,显示/隐藏字段
- 自定义 Angular 日期范围过滤器,以仅显示该日期范围内的项目
- 使用 javascript 获取仅在日期范围内显示的数据
- AngularJS - 显示/隐藏根范围内的元素
- 角度 ng 显示日期在时间范围内或不从
- 当数字在范围内时显示特定图像
- 修改Meteor-React待办事项列表示例,显示一个时间范围内创建的列表项
- UI滑块:将可用值突出显示到范围内
- 高亮显示鼠标在某个范围内的位置
- HTML5/JS地理定位只显示一定半径范围内的帖子
- 如何以json格式存储日期,并在给定范围内逐个显示