Java - 布尔逻辑 - 无法识别对象

时间:2014-02-17 00:37:20

标签: java date boolean

我正在尝试比较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;

}

有没有人有任何建议?还是指针? 而且,我最后的“其他”陈述也一直给我错误。

4 个答案:

答案 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)

我会将字符串onetwo分成-并将它们放入数组,一年一次,一个月一天,一天一天。然后,使用.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]);        
    }

基本上,这会将日期拆分为三个独立的数组yearmonthday。现在,您可以使用comparatorif语句来查看哪个日期更大。