Java 如何将当前时间与Android中存储在数据库中的时间进行比较

Java 如何将当前时间与Android中存储在数据库中的时间进行比较,java,android,Java,Android,如何将当前日期与数据库中存储的值进行比较?目前我的代码如下所示: final String dDate = cursor.getString(cursor.getColumnIndex(cursor.getColumnName(4))); final String dTime = cursor.getString(cursor.getColumnIndex(cursor.getColumnName(5))); Calendar calendar1 = Calendar.getInstance()

如何将当前日期与数据库中存储的值进行比较?目前我的代码如下所示:

final String dDate = cursor.getString(cursor.getColumnIndex(cursor.getColumnName(4)));
final String dTime = cursor.getString(cursor.getColumnIndex(cursor.getColumnName(5)));
Calendar calendar1 = Calendar.getInstance();
SimpleDateFormat formatter1 = new SimpleDateFormat("dd/M/yyyy");
String currentDate = formatter1.format(calendar1.getTime());

Calendar calendar2 = Calendar.getInstance();
SimpleDateFormat formatter2 = new SimpleDateFormat("h:mm");
String currentTime = formatter2.format(calendar2.getTime());
if(currentDate.compareTo(dDate)>=0) {
  if (currentDate.equals(currentDate)) {
    if (currentTime.compareTo(dTime) > 0) {
      myCheckBox.setChecked(true);
      myCheckBox.setEnabled(false);
    }
  }
}

无法可靠地将日期作为字符串进行比较。您应该首先将光标中的日期和时间字符串组合成一个
date
对象,然后将其与当前时间戳进行比较

您的代码应该类似于

final String dDate = cursor.getString(cursor.getColumnIndex(cursor.getColumnName(4)));
final String dTime = cursor.getString(cursor.getColumnIndex(cursor.getColumnName(5)));

SimpleDateFormat formatter = new SimpleDateFormat("dd/M/yyyy h:mm");
Date dbDateTime = formatter.parse(dDate + " " + dTime);

if(new Date().compareTo(dbDateTime) >= 0) {
    myCheckBox.setChecked(true);
    myCheckBox.setEnabled(false);
}

这里,
simpleDataFormat#parse()
为我们提供了一个
Date
对象,其中包含从组合字符串初始化的日期和时间单位。然后可以简单地将其与返回系统当前日期和时间的
新日期()对象进行比较。

您无法可靠地将日期作为字符串进行比较。您应该首先将光标中的日期和时间字符串组合成一个
date
对象,然后将其与当前时间戳进行比较

您的代码应该类似于

final String dDate = cursor.getString(cursor.getColumnIndex(cursor.getColumnName(4)));
final String dTime = cursor.getString(cursor.getColumnIndex(cursor.getColumnName(5)));

SimpleDateFormat formatter = new SimpleDateFormat("dd/M/yyyy h:mm");
Date dbDateTime = formatter.parse(dDate + " " + dTime);

if(new Date().compareTo(dbDateTime) >= 0) {
    myCheckBox.setChecked(true);
    myCheckBox.setEnabled(false);
}

这里,
simpleDataFormat#parse()
为我们提供了一个
Date
对象,其中包含从组合字符串初始化的日期和时间单位。然后可以简单地将其与返回系统当前日期和时间的
新日期()对象进行比较。

此代码正在工作。退房

Calendar calendar1 = Calendar.getInstance();
SimpleDateFormat formatter1 = new SimpleDateFormat("dd/M/yyyy h:mm");
String currentDate = formatter1.format(calendar1.getTime());

final String dateString = cursor.getString(4);
final String timeString = cursor.getString(5);
String datadb =dateString+" "+timeString;

//  Toast.makeText(context,"databse date:-"+datadb+"Current Date :-"+currentDate,Toast.LENGTH_LONG).show();

if(currentDate.compareTo(datadb)>=0) {
    myCheckBox.setChecked(true);
    myCheckBox.setEnabled(false);
}

此代码正在运行。退房

Calendar calendar1 = Calendar.getInstance();
SimpleDateFormat formatter1 = new SimpleDateFormat("dd/M/yyyy h:mm");
String currentDate = formatter1.format(calendar1.getTime());

final String dateString = cursor.getString(4);
final String timeString = cursor.getString(5);
String datadb =dateString+" "+timeString;

//  Toast.makeText(context,"databse date:-"+datadb+"Current Date :-"+currentDate,Toast.LENGTH_LONG).show();

if(currentDate.compareTo(datadb)>=0) {
    myCheckBox.setChecked(true);
    myCheckBox.setEnabled(false);
}

来自光标的日期和时间字符串是否属于同一天?来自光标的日期和时间字符串是否属于同一天?对于将来的所有日期,如果月份的日期小于当前月份的日期,则接受的回答将失败。例如,It今天的报告2015年2月19日大于2015年5月10日、2020年9月1日等。将日期作为字符串进行比较是非常糟糕的!!接受的答案在将来的所有日期都会失败,如果月份的日期小于当前月份的日期。例如,It今天的报告2015年2月19日大于2015年5月10日、2020年9月1日等。将日期作为字符串进行比较是非常糟糕的!!