Question: I just wanted to get offset(+02:00) from TimeZone but seems like it is not working for IST, JST, EST, and BET.

```
TimeZone exchangeTimeZone = banker.getTimeZone();   
String timeZone = ZonedDateTime.now(ZoneId.of(exchangeTimeZone.getID())).getOffset().getId();

```

It is returning error "Unknown time-zone ID: EST". Date object is not avilable with me.

Answer: 
Use [ZoneId.SHORT\_IDS](https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html#SHORT_IDS)

```
ZonedDateTime.now(ZoneId.of(exchangeTimeZone.getID(), ZoneId.SHORT_IDS))
             .getOffset().getId();

```
You could try to find a mapping for an abbreviation you got:

```java
public static ZoneId getFromAbbreviation(String abbreviation) {
    return ZoneId.of(ZoneId.SHORT_IDS.get(abbreviation));
}

```

You could get the offsets like in this `main`:

```java
public static void main(String[] args) {
    ZoneId istEquivalent = getFromAbbreviation("IST");
    ZoneId estEquivalent = getFromAbbreviation("EST");
    ZoneId jstEquivalent = getFromAbbreviation("JST");
    ZoneId betEquivalent = getFromAbbreviation("BET");
    ZonedDateTime istNow = ZonedDateTime.now(istEquivalent);
    ZonedDateTime estNow = ZonedDateTime.now(estEquivalent);
    ZonedDateTime jstNow = ZonedDateTime.now(jstEquivalent);
    ZonedDateTime betNow = ZonedDateTime.now(betEquivalent);
    System.out.println("IST --> " + istEquivalent + " with offset " + istNow.getOffset());
    System.out.println("EST --> " + estEquivalent + " with offset " + estNow.getOffset());
    System.out.println("JST --> " + jstEquivalent + " with offset " + jstNow.getOffset());
    System.out.println("BET --> " + betEquivalent + " with offset " + betNow.getOffset());
}

```

the output is

```none
IST --> Asia/Kolkata with offset +05:30
EST --> -05:00 with offset -05:00
JST --> Asia/Tokyo with offset +09:00
BET --> America/Sao_Paulo with offset -03:00

```

As you can see, `EST` simply doesn't have a zone name, just an offset.