我需要验证2个日期,一个是由用户挑选的,另一个是我从日历中得到的...这是我到目前为止尝试的没有成功:
Calendar c = Calendar.getInstance();
if(!DateIsOlder(txtVwAppointmentDate.getText(), c.getTime())) {
try {
//My code
}
public static boolean DateIsOlder(CharSequence date1, Date date2){
//SimpleDateFormat Date2 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz -HH:mm yyyy", Locale.ENGLISH);
SimpleDateFormat dfDate = new SimpleDateFormat("dd/mm/yyyy", Locale.ENGLISH);
boolean isOlder = false;
try{
//Date newDate = (Date)Date2.parse(date2);
if(dfDate.parse(String.valueOf(date1)).before(dfDate.format(date2))){
isOlder = true;
}
else if (dfDate.parse(String.valueOf(date1)).equals(dfDate.format(date2))){
isOlder = false;
}
else {
isOlder = false;
}
}catch (Exception e){
e.printStackTrace();
}
return isOlder;
}
错误在.before(dfDate.format(date2))上,它说: 错误:(484,51)错误:类Date之前的方法无法应用于给定类型; 要求:日期 发现:字符串 reason:实际参数String无法通过方法调用转换转换为Date
如果你可以看到,如果我比较两个日期,如果它们相等并且编译器在这一行上没有显示任何错误,则在else上:
else if (dfDate.parse(String.valueOf(date1)).equals(dfDate.format(date2)))
此外,我尝试将其更改为日期但没有成功...任何想法可以帮助我解决这个问题?感谢。
答案 0 :(得分:0)
您可以将用户日期转换为时间戳,并可以比较它们。
DateFormat formatter = new SimpleDateFormat("MM-dd-yyyy");
Date date = (Date)formatter.parse(str_date);
Timestamp timeStamp = new TimeStamp(date);
答案 1 :(得分:0)
不要使用java.util.Date。谷歌说以下关于日期:
这堂课'不再使用与显示相关的功能,现在由DateFormat提供,此类'现已提供已弃用的计算功能。
换句话说,它已被弃用。您应该使用DateFormat,您可以在这里阅读更多信息:http://developer.android.com/reference/java/text/DateFormat.html
要进行日期比较,您需要制作两个不同的Calendar对象并调用before()或after()
答案 2 :(得分:0)
你的问题是dfDate.format(date2)返回一个String而不是Date对象,所以你需要将你的方法变为:
public static boolean DateIsOlder(CharSequence date1, Date date2){
SimpleDateFormat dfDate = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
boolean isOlder = false;
try{
if(dfDate.parse(String.valueOf(date1)).before(dfDate.parse(dfDate.format(date2)))){
isOlder = true;
}
else {
isOlder = false;
}
}catch (Exception e){
e.printStackTrace();
}
return isOlder;
}
答案 3 :(得分:0)
非常感谢帮助我找到解决方案的所有人,我尝试使用简单的方法并且它有效,我不需要所有信息calendar.getTime带来所以我做以下事情:
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int day = c.get(Calendar.DAY_OF_MONTH);
if(!DateIsOlder(txtVwAppointmentDate.getText(), month + "/" + day + "/" + year)) {
try { //my code }
public static boolean DateIsOlder(CharSequence date1, String date2){
SimpleDateFormat dfDate = new SimpleDateFormat("MM/dd/yyyy");
boolean isOlder = false;
try{
//Date newDate = (Date)Date2.parse(date2);
if(dfDate.parse(String.valueOf(date1)).before(dfDate.parse(date2))){
isOlder = true;
}
else {
isOlder = false;
}
}catch (Exception e){
e.printStackTrace();
}
return isOlder;
}
它没有任何问题!谢谢大家:))