我正在尝试使用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;
}
答案 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)