【问题标题】:how to determine whether the date of this week or last?如何判断日期是本周还是最后?
【发布时间】:2015-06-16 08:54:28
【问题描述】:

我有日期数组。例如 10 个日期。我需要计算每个日期 - 这是本周或上周。这是怎么做的?

private List<Receipt> getSectionPosition(List<Receipt> receiptList){
       List<Receipt> list = new ArrayList<>();
       Date now = new Date();
        for (int i = 0; i<receiptList.size(); i++){
            if (receiptList.get(i).getCreatedDate().compareTo(now)==0){
                list.add(receiptList.get(i));
            }
        }
       return list;
    }

我通过List&lt;Receipt&gt;,如果收据在本周有日期,我将其添加到新列表中。但它不起作用。

【问题讨论】:

  • 您需要检查Date now 和getCreatedDate 的日期格式。比较需要相同。

标签: android android-date


【解决方案1】:

使用类似的东西进行比较:

private List<Receipt> getSectionPosition(List<Receipt> receiptList){
   List<Receipt> list = new ArrayList<>();
   Date now = new Date();
   Calendar c = Calendar.getInstance();
   c.setTime(now);
   int currentWeek = c.get(Calendar.WEEK_OF_YEAR);
   for (int i = 0; i<receiptList.size(); i++){
       c.setTime(receiptList.get(i).getCreatedDate());
       int createdDateWeek = c.get(Calendar.WEEK_OF_YEAR);

       if (currentWeek == createdDateWeek){
           list.add(receiptList.get(i));
       }
   }
   return list;
}

附:要获得更正确的结果,您也可以检查年份(不仅仅是一年中的一周),您可以这样做:int year = c.get(Calendar.YEAR); http://developer.android.com/reference/java/util/Calendar.html#WEEK_OF_YEAR

【讨论】:

  • 它工作!即使是一个小问题。我需要更改,仅在上周和本周添加?
  • 对不起,我不明白你的问题..你能再问一次吗?您需要检查日期是在前一周还是?
  • Aaaa 你想检查日期是在 currentWeek 还是在上周?如果是 - 您可以将此证明声明 if (currentWeek == createdDateWeek){ 更改为 if (currentWeek == createdDateWeek || createdDateWeek == currentWeek - 1){,因为 currentWeek 实际上是一年中的第几周,当您获得 currentWeek - 1 时,您将成为前一周
  • 边界条件呢?例如如果当前周是一年中的第一周?
【解决方案2】:

创建一个比较日期的方法

public boolean isTheSameWeek (Date date ){

Calendar c=Calendar.getInstance();
year1=c.get(c.YEAR);
week1=c.get(c.WEEK_OF_YEAR);

Calendar c1=Calendar.getInstance();
c.setTimeInMillis(date.getTime())
year2=c.get(c.YEAR);
week2=c.get(c.WEEK_OF_YEAR);

if(year1 == year2){
       if(week1 == week2}{
       return true;

       }
    }
return false
}}

在你的方法中调用这个

     if (isTheSameWeek(receiptList.get(i).getCreatedDate())){

【讨论】:

猜你喜欢
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 2016-09-16
相关资源
最近更新 更多