Java 比较listview日期与当前日期

Java 比较listview日期与当前日期,java,android,android-calendar,Java,Android,Android Calendar,我有一份过期的产品清单。现在,我正在尝试将列表视图中的日期与当前日期进行比较。若产品的过期日期早于当前日期,那个么我想做点什么。我正在像下面这样尝试,但没有得到预期的结果。有人能帮我吗?谢谢 代码段: String pdate = product.get(ListViewActivity.KEY_DATE); String pattern = "dd-MM-yyyy"; SimpleDateFormat formatter = new SimpleDateFormat(pattern); Da

我有一份过期的产品清单。现在,我正在尝试将列表视图中的日期与当前日期进行比较。若产品的过期日期早于当前日期,那个么我想做点什么。我正在像下面这样尝试,但没有得到预期的结果。有人能帮我吗?谢谢

代码段:

String pdate = product.get(ListViewActivity.KEY_DATE);

String pattern = "dd-MM-yyyy";
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
Date Date1 = formatter.parse(currentDate);
Date Date2 = formatter.parse(pdate);
//if(Date1.compareTo(Date2)){}
if ((Date1.compareTo(Date2)) > 0){
     Toast.makeText(this.activity, "Expired", Toast.LENGTH_SHORT).show();
     //do something 
}
ListProductAdapter.java中的完整代码:

public class ListProductAdapter extends BaseAdapter {

private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater = null;

public ListProductAdapter(Activity a, ArrayList<HashMap<String, String>> d){
    activity = a;
    data = d;
    inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}


@Override
public int getCount() {
    return data.size();
}

@Override
public Object getItem(int position) {
    return position;
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

        ListProductViewHolder holder = null;

        if(convertView == null){
            holder = new ListProductViewHolder();
            convertView = LayoutInflater.from(activity).inflate(R.layout.list_row, parent, false);

            holder.productName = convertView.findViewById(R.id.title); // title
            holder.productDescription = convertView.findViewById(R.id.description); // description
            holder.productDate = convertView.findViewById(R.id.duration); // expiry time

            convertView.setTag(holder);
        }else{
            holder = (ListProductViewHolder) convertView.getTag();
        }
        holder.productName.setId(position);
        holder.productDescription.setId(position);
        holder.productDate.setId(position);

        HashMap<String, String> product = new HashMap<String, String>();
        product = data.get(position);

        try {
            holder.productName.setText(product.get(ListViewActivity.KEY_PRODUCT_NAME));
            holder.productDescription.setText(product.get(ListViewActivity.KEY_DESCRIPTION));
            holder.productDate.setText(product.get(ListViewActivity.KEY_DATE));

            String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
            String pdate = product.get(ListViewActivity.KEY_DATE);

            String pattern = "dd-MM-yyyy";
            SimpleDateFormat formatter = new SimpleDateFormat(pattern);
            Date Date1 = formatter.parse(currentDate);
            Date Date2 = formatter.parse(pdate);
            if ((Date1.compareTo(Date2)) > 0){
               Toast.makeText(this.activity, "Expired", Toast.LENGTH_SHORT).show();
               //do something 
            }
        }catch (Exception e){

        }

        return convertView;
    }
}


class ListProductViewHolder {
    TextView productName;
    TextView productDescription;
    TextView productDate;

}
公共类ListProductAdapter扩展了BaseAdapter{
私人活动;
私有数组列表数据;
专用静态充气机=空;
公共ListProductAdapter(活动a,ArrayList d){
活动=a;
数据=d;
充气器=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
}
@凌驾
public int getCount(){
返回data.size();
}
@凌驾
公共对象getItem(int位置){
返回位置;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ListProductViewHolder=null;
if(convertView==null){
holder=新的ListProductViewHolder();
convertView=LayoutFlater.from(活动)。充气(R.layout.list_行,父项,false);
holder.productName=convertView.findViewById(R.id.title);//title
holder.productDescription=convertView.findViewById(R.id.description);//description
holder.productDate=convertView.findViewById(R.id.duration);//到期时间
convertView.setTag(支架);
}否则{
holder=(ListProductViewHolder)convertView.getTag();
}
holder.productName.setId(位置);
holder.productDescription.setId(位置);
holder.productDate.setId(位置);
HashMap产品=新的HashMap();
产品=数据。获取(位置);
试一试{
holder.productName.setText(product.get(ListViewActivity.KEY\u product\u NAME));
holder.productDescription.setText(product.get(ListViewActivity.KEY_DESCRIPTION));
holder.productDate.setText(product.get(ListViewActivity.KEY_DATE));
字符串currentDate=newSimpleDateFormat(“dd-MM-yyyy”,Locale.getDefault()).format(new-Date());
字符串pdate=product.get(ListViewActivity.KEY\u日期);
字符串模式=“dd-MM-yyyy”;
SimpleDataFormat格式化程序=新的SimpleDataFormat(模式);
Date Date1=格式化程序.parse(currentDate);
Date Date2=格式化程序.parse(pdate);
如果((日期1.与(日期2))相比>0){
Toast.makeText(this.activity,“Expired”,Toast.LENGTH_SHORT).show();
//做点什么
}
}捕获(例外e){
}
返回视图;
}
}
类ListProductViewHolder{
TextView产品名称;
文本视图产品描述;
TextView产品日期;
}
试试这个

productDate.getTime() - System.currentTimeMillis() > 0
System.currentTimeMilis() - productDate.getTime() > 0
这将给你两个日期之间的长值差异。如果需要,可以将long转换为date

我不知道哪一个适合你。你可以很容易地检查和使用它

currentDate=
System.currentTimeMillis()
productDate=您的产品的哪个到期日

如果您的当前日期与当前日期不同,您可以这样更改它
currentDate.getTime()
尝试以下操作:

 Date currentTime = new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000);
 Calendar c = Calendar.getInstance();
 c.setTime(currentTime);

您支持的最低API级别是什么?如果您可以依赖Java 8,请使用
Java.time
,如果您可以使用中提到的ThreeTenABP,请使用它…我正在使用
minSdkVersion 15
openjdk version“11.0.5”2019-10-15
认真地使用
Java.time
via并停止使用
Java.util.Date
。。。