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日等。将日期作为字符串进行比较是非常糟糕的!!