如何在方法中正确使用LocalTime ?



我必须创建一个CarFactory类,它按季节绘制一辆汽车(这个我认为我是正确的),并从晚上20点到早上6点打开给定汽车的灯。请忽略@Beans,它只是用于测试目的。我的问题是如何实现hashheadlightsturnedon()应该看起来像?我有点不知道如何实施从晚上20点到早上6点开灯的规则。

接口:

public interface Car {
boolean hasHeadlightsTurnedOn();
String getCarType();
}

那么三种类型的汽车,作为一个例子,其中之一:

public class Sedan implements Car {
@Override
public String getCarType(){
return "Sedan";
}
@Override
public boolean hasHeadlightsTurnedOn() {
return true ;
}
}

类CarFactory:

@Configuration
public class CarFactory {
@Bean
public Car randomCar(){
Car car;
String[] strArr= {"Spring", "Autumn", "Summer","Winter"};
Random generator = new Random();
int chosen = generator.nextInt(strArr.length);
if (chosen == 3) {
car = new SUV();
} else if (chosen == 2) {
car = new Cabrio();
} else {
car = new Sedan();
}
return car;
}
}

这将是hasHeadlightsTurnedOn的函数。

boolean hasHeadlightsTurnedOn(){
int hour = LocalTime.now().getHour();
return hour>=20 || hour<6;
}

对于季节部分,您可以使用月份和日期来确定它是哪个季节,而不是随机生成的数字。

@Override
public boolean hasHeadlightsTurnedOn() {
LocalTime lt = LocalTime.now();
// long way
/*int hour = lt.getHour();
if (hour < 6 || hour >= 20) {
return true;
} else {
return false;
}*/
// short way
return lt.getHour() < 6 || lt.getHour() >= 20;
}

另外,我建议在接口中使用抽象类或默认方法。这样,您就不必为每个类创建相同的方法。

抽象类:

import java.time.LocalTime;
public abstract class AbstractCar implements Car {
@Override
public boolean hasHeadlightsTurnedOn() {
LocalTime lt = LocalTime.now();
return lt.getHour() < 6 || lt.getHour() >= 20;
}
}

,然后是汽车类:

public class Sedan extends AbstractCar {
@Override
public String getCarType(){
return "Sedan";
}
}

默认的方法:

import java.time.LocalTime;
public interface Car {
default boolean hasHeadlightsTurnedOn() {
LocalTime lt = LocalTime.now();
return lt.getHour() < 6 || lt.getHour() >= 20;
}
String getCarType();
}

和您的汽车类,只是没有hasHeadlightsTurnedOn函数

为每个汽车类型定义一个私有布尔变量。检查当前时间,如果它落在时间括号内,则将其设置为true。像这样的

Date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm") ;
dateFormat.format(date);
System.out.println(dateFormat.format(date));
if(dateFormat.parse(dateFormat.format(date)).after(dateFormat.parse("12:07")))
{
System.out.println("Current time is greater than 12.07");
}else{`enter code here`
System.out.println("Current time is less than 12.07");
}

LocalDateTime有一个getHour()方法,您可以这样使用:

LocalDateTime time = LocalDateTime.now();
if (time.getHour() < 6 || time.getHour() >= 20) {
// headlights on
} else {
// headlights off
}

最新更新