如何将日期字符串与当前日期进行比较?
How to compare a date string to current date?
我有一个日期选择器,我通过它在字符串中设置一个日期,即 mDate。
现在要设置时间,我想检查当前日期和 mDate 是否相同,如果它们相同,我想将 minTime 设置为 TimePicker 对话框,如果它们不相同,则不应将最小时间设置为时间。
如果 mDate 为空,时间仍应显示所有时间。
mEditTxt_Time.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Date date = null;
try {
if(!mDate.equals("")) {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
date = format.parse(mDate);
}
Calendar compareDate = Calendar.getInstance();
compareDate.getTime();
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
PostShippingFragment.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
true
);
if(date!=null) {
if (date.compareTo(compareDate.getTime())) {
tpd.setMinTime(now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND));
}
}
else {
tpd.setVersion(TimePickerDialog.Version.VERSION_2);
tpd.setAccentColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));
tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
Log.d("TimePicker", "Dialog was cancelled");
}
});
tpd.show(getFragmentManager(), "Timepickerdialog");
}
}
catch (ParseException e)
{
Log.e("exception",e.toString());
}
}
});
我试过了,但无法进行比较。
请帮忙。谢谢。
使用以下任一方法比较日期
方法一
- date1.after(日期 2)
- date1.before(日期 2)
- date1.equals(日期 2)
方法二
if(date1.compareTo(date2)>0){
Log.d("Date", "Date1 is after Date2");
}else if(date1.compareTo(date2)<0){
Log.d("Date", "Date1 is before Date2");
}else{
Log.d("Date", "Date1 is equal to Date2");
}
方法三
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
- cal1.after(cal2)
- cal1.before(cal2)
- cal1.equals(cal2)
您可以使用日期的compareTo()
方法。
它将return一个整数值,
- return 一个值 0 如果参数日期 (compareDate) 等于 到这个日期;
- return 一个值 小于 0 如果此日期 在 日期参数 (compareDate) 之前;
- return 值 大于 0 如果此日期 在 日期之后
参数(比较日期)。
因此,如果您想检查两个日期是否相同,您需要按如下方式修改 if condition
。
if (date.compareTo(compareDate.getTime()) == 0) {
我有一个日期选择器,我通过它在字符串中设置一个日期,即 mDate。 现在要设置时间,我想检查当前日期和 mDate 是否相同,如果它们相同,我想将 minTime 设置为 TimePicker 对话框,如果它们不相同,则不应将最小时间设置为时间。
如果 mDate 为空,时间仍应显示所有时间。
mEditTxt_Time.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Date date = null;
try {
if(!mDate.equals("")) {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
date = format.parse(mDate);
}
Calendar compareDate = Calendar.getInstance();
compareDate.getTime();
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
PostShippingFragment.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
true
);
if(date!=null) {
if (date.compareTo(compareDate.getTime())) {
tpd.setMinTime(now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND));
}
}
else {
tpd.setVersion(TimePickerDialog.Version.VERSION_2);
tpd.setAccentColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));
tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
Log.d("TimePicker", "Dialog was cancelled");
}
});
tpd.show(getFragmentManager(), "Timepickerdialog");
}
}
catch (ParseException e)
{
Log.e("exception",e.toString());
}
}
});
我试过了,但无法进行比较。
请帮忙。谢谢。
使用以下任一方法比较日期
方法一
- date1.after(日期 2)
- date1.before(日期 2)
- date1.equals(日期 2)
方法二
if(date1.compareTo(date2)>0){
Log.d("Date", "Date1 is after Date2");
}else if(date1.compareTo(date2)<0){
Log.d("Date", "Date1 is before Date2");
}else{
Log.d("Date", "Date1 is equal to Date2");
}
方法三
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
- cal1.after(cal2)
- cal1.before(cal2)
- cal1.equals(cal2)
您可以使用日期的compareTo()
方法。
它将return一个整数值,
- return 一个值 0 如果参数日期 (compareDate) 等于 到这个日期;
- return 一个值 小于 0 如果此日期 在 日期参数 (compareDate) 之前;
- return 值 大于 0 如果此日期 在 日期之后 参数(比较日期)。
因此,如果您想检查两个日期是否相同,您需要按如下方式修改 if condition
。
if (date.compareTo(compareDate.getTime()) == 0) {