我试图通过给区域偏移量,例如“GMT 2”作为字符串来获得所有的区域ID。然而,我不确定是否可以使用任何Java8库。是否可以获得具有给定分区偏移的所有分区id值?
在java中有一个名为getAvailableZoneIds()的方法。时间
但不采用偏移参数。
如果您想要当前与UTC的偏移量为02:00小时的区域,可以尝试通过GetAvailableZoneId()
、getRules()
和getOffset(Instant Instant)
进行过滤来收集区域名称(而不是直接ZoneId
对象)。后者需要一个参数来定义这种方法所依据的时间
在本例中,现在是⇒ <代码>即时。现在():
public static void main(String[] args) throws Exception {
// define the desired offset
ZoneOffset plusTwo = ZoneOffset.ofHours(2);
// collect all the zones that have this offset at the moment
List<String> zonesWithPlusTwo =
ZoneId.getAvailableZoneIds()
.stream()
// filter by those that currently have the given offset
.filter(zoneId -> ZoneId.of(zoneId)
.getRules()
.getOffset(Instant.now())
.equals(plusTwo))
.sorted()
.collect(Collectors.toList());
// print the collected zones
zonesWithPlusTwo.forEach(System.out::println);
}
今天,2021年8月的第二十五,产量是
Africa/Blantyre
Africa/Bujumbura
Africa/Cairo
Africa/Ceuta
Africa/Gaborone
Africa/Harare
Africa/Johannesburg
Africa/Khartoum
Africa/Kigali
Africa/Lubumbashi
Africa/Lusaka
Africa/Maputo
Africa/Maseru
Africa/Mbabane
Africa/Tripoli
Africa/Windhoek
Antarctica/Troll
Arctic/Longyearbyen
Atlantic/Jan_Mayen
CET
Egypt
Etc/GMT-2
Europe/Amsterdam
Europe/Andorra
Europe/Belgrade
Europe/Berlin
Europe/Bratislava
Europe/Brussels
Europe/Budapest
Europe/Busingen
Europe/Copenhagen
Europe/Gibraltar
Europe/Kaliningrad
Europe/Ljubljana
Europe/Luxembourg
Europe/Madrid
Europe/Malta
Europe/Monaco
Europe/Oslo
Europe/Paris
Europe/Podgorica
Europe/Prague
Europe/Rome
Europe/San_Marino
Europe/Sarajevo
Europe/Skopje
Europe/Stockholm
Europe/Tirane
Europe/Vaduz
Europe/Vatican
Europe/Vienna
Europe/Warsaw
Europe/Zagreb
Europe/Zurich
Libya
MET
Poland
编辑:考虑到@BasilBorque的评论,下面是一个示例方法,它采用两个参数,一个是偏移量的值,另一个是瞬时值
,以计算为基础:
public static List<String> getZones(int offsetHours, Instant base) {
// create the offset
ZoneOffset offset = ZoneOffset.ofHours(offsetHours);
// collect all the zones that have this offset at the moment
return ZoneId.getAvailableZoneIds()
.stream()
// filter by those that currently have the given offset
.filter(zoneId -> ZoneId.of(zoneId)
.getRules()
.getOffset(base)
.equals(offset))
.sorted()
.collect(Collectors.toList());
}
您可以创建一个局部变量(可能是一个类成员),以便将其传递给方法。这将减少对Instant的调用量。now()
并允许您使用与调用该方法时不同的即时
s。
问题内容: 我如何平均?我想找到的平均值,学生总数和的总数。例: 输入 :4 4 4 4 产出: 学生总数 :4 总GPA :16 平均GPA: 4 问题答案: 如果问题是您得到错误的答案,则原因是此循环: 大概您打算在用户输入负数时退出循环。这样做有问题,它将在总数和计数中包含负数。您可以这样重写循环: (其他解决方案也是可能的)。在代码的后面,您将需要防止第一个数字为负。如果发生这种情况,将为
问题内容: 使用Java,我有一个实例,该实例具有GMT偏移量和来自旧系统的夏令时信息。 我希望能够使用Java 8时间API。 实际上,返回没有夏令时信息的 问题答案: 这里我喜欢的解决方案是因为它很简单,但是您需要一个Date和一个TimeZone作为参数来检索ZoneId
我需要在输入用户的邮件时获取用户ID。 有可能吗? 当然,我有一个经过身份验证的用户,他正在询问已经创建的用户的邮件。 我想检索像这样的用户 但以一种可能的方式。
如果条件匹配,我想从多数组中获取变量的特定值。 打印阵列时: 给出如下数组: 如果ID与21匹配,我正在尝试获取客户号码
我在Eclipse中获得了一个Hashmap条目,如下所示: 链接到hashmap输出的图片 我无法使用键=“value”获取值。我收到的错误是:java。lang.ClassCastException:类java。无法将lang.Double转换为java类。util。Map(java.lang.Double和java.util.Map位于加载程序“bootstrap”的模块java.base中
我对编程很陌生,我想做一个程序,用不同的变量发出12张卡片,然后将每张完整的卡片存储在某个地方供以后使用: N=Number(卡片上的数字,可以从1到3) C=Color(卡片是什么颜色,绿色、蓝色或红色) F=Form(有3种形式:蛇、时钟和圆) R=Fill(可以是满的、半的或空的) 这是我到目前为止得到的: