javascript - 按日期过滤的正确方法是什么
问题描述
我有一个对象数组,其日期字符串格式如下2019-03-22T13:36:18.333Z
我很好奇最好的做法是按过去一天、过去一周、过去一个月和过去一年对这些进行排序。
我正在考虑只是在那个T
时候分裂,然后在-
我也在考虑将日期放入 Date 对象并以这种方式计算出来。
什么是最有活力的?最有效率?等等
const dates = [
{created_at: '2019-03-22T13:36:18.333Z'}
{created_at: '2019-05-22T13:36:18.333Z'}
{created_at: '2019-03-23T13:36:18.333Z'}
{created_at: '2019-03-24T13:36:18.333Z'}
{created_at: '2019-01-22T13:36:18.333Z'}
]
const spliteDate = (date, splitBy) => {
if(splitBy = 'day'){
return date.split("T")[0].split("-")[1]
} else if(splitBy = 'month') {
return date.split("T")[0].split("-")[2]
} else if(splitBy = 'year') {
return date.split("T")[0].split("-")[0]
}
}
dates.filter(date => {
return splitDate(date, 'month') === Date.now().getMonth()
}
沿着这些思路
解决方案
将字符串转换为 Date 对象可能是最简单的
例如,您有一个字符串格式的日期数组:
const arr = ['2019-03-22T13:36:18.333Z', '2019-03-28T16:36:18.333Z', '2015-05-21T16:36:18.333Z'];
看看你的问题,如果你想在某个日期过滤它,这样做肯定会更短更有效:
const filterByDate = dateFilter => arr.filter(date => new Date(date).getDate() < dateFilter);
filterByDate(25);
// result [ '2019-03-22T13:36:18.333Z', '2019-05-21T16:36:18.333Z' ]
而且,如果您需要多个过滤器,例如按日期和年份过滤,
const filterByDateAndYear = (dateFilter, yearFilter) => arr.filter(date => (new Date(date).getDate() < dateFilter) && (new Date(date).getFullYear() < yearFilter));
filterByDateAndYear(25, 2018);
//result [ '2015-05-21T16:36:18.333Z' ]
推荐阅读
- python - 错误:“NoneType”和“int”的实例之间不支持“>”
- amazon-web-services - 为什么我的 AWS S3 对象计数不同
- python-3.x - 有没有办法使用python从文本文件中只提取特定的行
- reactjs - tfjs-react-native 用于实时对象检测(expo 托管工作流)
- sql-server-2012 - 将默认值设置为日期时间列中的当前日期时间,插入时不应接受除当前日期时间之外的其他日期时间
- javascript - 显示和隐藏上一个和下一个按钮 jQuery
- javascript - 无需分叉即可添加到 git 库功能
- here-api - 区域形状的检索 - Here Maps API with V7
- c# - 模型验证错误消息不起作用并返回 Null
- python - 熊猫数据框中的索引时间戳问题