我正在尝试比较main方法中的两个日期。 我需要提出一个逻辑来比较两个日期,看看其中一个是相同的日期,还是之前的日期。
将值添加到布尔方法中时遇到了一些麻烦。 方法必须是单独的 - 主方法必须保持日期值, 并且布尔方法必须处理类中的逻辑。
my main and boolean so far
public static void main(String[]args)
{
SimpleDate one = new SimpleDate("1999-01-23");
SimpleDate two = new SimpleDate("1998-03-23");
//one.displayDate();
//two.displayDate();
}
/*
public boolean isAfter(int SimpleDate){
boolean isAfter = false;
isAfter = one.equals(two);
if(isAfter == true);
System.out.println ("true");
else
return false;
}
有没有人有任何建议?还是指针? 而且,我最后的“其他”陈述也一直给我错误。
答案 0 :(得分:1)
从我之前使用过的项目中试试这个。
private boolean isValidDateFormat(String dateStr) {
return dateStr.matches("\\d{2}-\\d{2}-\\d{4}");
}
private boolean isValidFutureDate(String dateStr) {
if (!isValidDateFormat(dateStr)) {
return false;
}
String[] parts = dateStr.split("-");
Calendar c = Calendar.getInstance();
c.set(Integer.parseInt(parts[2]), Integer.parseInt(parts[1]),
Integer.parseInt(parts[0]));
Calendar today = Calendar.getInstance();
if (c.after(today)) {
return true;
} else {
return false;
}
}
private boolean isValidBeforeDate(String dateStr) {
if (!isValidDateFormat(dateStr)) {
return false;
}
String[] parts = dateStr.split("-");
Calendar c = Calendar.getInstance();
c.set(Integer.parseInt(parts[2]), Integer.parseInt(parts[1]),
Integer.parseInt(parts[0]));
Calendar today = Calendar.getInstance();
if (c.before(today)) {
return true;
} else {
return false;
}
}
基本上你可以做的是,接受2个参数并将它们解析为2个数组,并使用Calendar类创建两个不同日期的实例,从那里使用Calendar提供的.before和.after方法来检查,您也可以使用compareTo(date)== 0来检查今天的日期。
答案 1 :(得分:0)
使用java.util.Date,compareTo方法,它可以满足你的需要。
答案 2 :(得分:0)
简短的回答是,日期无法以这种方式进行比较。请在此链接中查看不同的选项:How to compare dates in Java?
答案 3 :(得分:0)
我会将字符串one
和two
分成-
并将它们放入数组,一年一次,一个月一天,一天一天。然后,使用.parseInt();
命令将每个String[]
更改为int[]
,并将它们作为整数进行比较。首先比较几年,然后是几个月,然后是几天。
如果您愿意,我可以写一些示例代码。
String[][] sorted = new String[2][3]; //hold sorted data
String[] unsorted = new String[2]; //hold unsorted data
unsorted[0] = one;
unsorted[1] = two;
int[] year = new int[2];
int[] month = new int[2];
int[] day = new int[2];
for (int i = 0; i < 2; i++){
sorted[i] = unsorted[i].split("-"); //sort data
}
//place sorted data into seperate arrays to make calculations more logical to look at
for (int i = 0; i < 2; i++){
year[i] = Integer.parseInt(sorted[i][1]);
month[i] = Integer.parseInt(sorted[i][2]);
day[i] = Integer.parseInt(sorted[i][3]);
}
基本上,这会将日期拆分为三个独立的数组year
,month
和day
。现在,您可以使用comparator
或if
语句来查看哪个日期更大。