如何使用if-else和String日期

时间:2015-10-08 05:32:58

标签: if-statement

我正在尝试使用if-else语句来获取用户输入的日期,并显示该特定季节的常量。

因此,例如,如果我要输入2015年4月25日的日期,我希望它显示Spring的价格。当我打印价格时,它显示为零。

任何帮助都会很棒。方法如下所示

public double determinePrice(){

    double price = 0;
    if(rentalDate.substring(1, 3).equals(3) || rentalDate.substring(1, 3).equals(4)|| rentalDate.substring(1, 3).equals(5))
        price = SPRING; 
    else if(rentalDate.substring(1, 3).equals(6) || rentalDate.substring(1, 3).equals(7)|| rentalDate.substring(1, 3).equals(8))
        price =  SUMMER;
    else if(rentalDate.substring(1, 3).equals(9) || rentalDate.substring(0, 3).equals(10)|| rentalDate.substring(0, 3).equals(11))
        price = FALL;   
    else if(rentalDate.substring(0, 3).equals(12) || rentalDate.substring(0, 3).equals(01)|| rentalDate.substring(1, 3).equals(02))
        price = WINTER;

    return price;

}

1 个答案:

答案 0 :(得分:1)

您可能应该尝试将字符串解析为LocalDate,然后使用这些(1)。使用LocalDate,您可以定义确定夏季,秋季和冬季开始的3个日期,并查看您的日期,如:

givenDate.isBefore(summerStartDate)

春季日期或

givenDate.isAfter(summerStartDate) && givenDate.isBefore(autumnStartDate)

夏天的日期......

使用LocalDate的另一种可能性是编写一个描述时间帧的类,方法isIn(LocalDate)检查给定日期是否在开始和结束之间。

编辑: 只是看到您只测试属于特定月份的月份。将原始日期解析为LocalDate后,您可以使用方法getMonth(以枚举值的形式给出月份)或getMonthValue(给出数字表示1-12)。

(1)如何转换:How to parse/format dates with LocalDateTime? (Java 8)