gpt4 book ai didi

java - 参数化 ZonedDateTime 方法

转载 作者:行者123 更新时间:2023-11-30 06:32:38 25 4
gpt4 key购买 nike

我有一个参数化方法:

private static Date getTimeFor(int hour, int minute, int second, int nanoSecond, String zoneId) {
ZonedDateTime time = ZonedDateTime.now()
.withZoneSameLocal(ZoneId.of(zoneId))
.withHour(hour)
.withMinute(minute)
.withSecond(second)
.withNano(nanoSecond);
return Date.from(time.toInstant());
}

随后:

    private Date getRomeStartTime(){
return getTimeFor(8,30,0,0,"Europe/Rome");
}

private Date getParisStartTime(){
return getTimeFor(9,30,0,0,"Europe/Paris");
}

private Date getLondonStartTime(){
return getTimeFor(9,00,0,0,"Europe/London");
}

随着更多城市的添加,这种情况可能会很快失控。我的目标是仅公开/公开以下方法并将 StartTimes 的构造委托(delegate)给其他地方:

public Date getEffectiveTimeFor(String zoneId){
// Delegate construction as per zoneId elsewhere
// dont want to use a long-winded if-else statement
}

我不能使用策略模式,因为我不应该传递对象,而只能传递字符串。这里最好的方法是什么?

(附:我必须返回旧的日期,这是不可能的)

最佳答案

您可以简单地使用 Map<String, LocalTime>存储每个区域 ID 的开始时间。然后在您的方法中从此 map 获取开始时间,并从那里创建日期。

关于java - 参数化 ZonedDateTime 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45772473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com