过滤列表根据当前日期android



我有一个ArrayList<CustomObject>,其中包含一些条目。每个条目都有一个与之关联的日期。目前,该日期存储为字符串。例如"2014-09-23T12:45:00"

我想过滤列表,得到一个包含今天才完成的条目的精炼列表。

我正在使用Pattern来实现这一点。但目前我在过滤后收到一个空列表。

这是我的代码:--

public class ArticleFilter implements Predicate<StatusResponse>
{
    private final Pattern pattern;
    public ArticleFilter(final String regex)
    {
        pattern = Pattern.compile(regex);
    }
    @Override
    public boolean apply(final StatusResponse input)
    {
        String dateString =  input.getStartTime();
        dateString =  dateString.split("T")[0]; // Getting date only
        return pattern.matcher(dateString).find();
    }
}

Main.java

Calendar currentDate = Calendar.getInstance(); //Get the current date
            SimpleDateFormat formatter= new SimpleDateFormat("yyyy/MM/dd"); //format it as per your requirement
            String dateNow = formatter.format(currentDate.getTime());
            ArrayList<StatusResponse> filteredResultList = Lists.newArrayList(Collections2.filter(resultList, new ArticleFilter(dateNow)));

这里的问题在于格式化程序。

您指定了"yyyy/MM/dd"的SimpleDateFormat,但您告诉我们您的日期存储为字符串,格式为"2014-09-23T12:45:00"。您需要更改SimpleDateFormat以匹配StatusResponse类中日期字符串的格式。

将其更改为

SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd");

这立即解决了问题。但是,我可以建议您不要处理日期的字符串表示,而是将代码更改为仅直接处理日历吗?

例如,让您的StatusResponse.getStartTime方法返回一个代表开始时间的Calendar,让ArticleFilter构造函数使用一个代表要筛选的日期的Calendar,并让apply方法检查两个日历是否为get(Calendar.YEAR)get(Calendar.DAY_OF_YEAR) 返回相同的值

最新更新