Java 8 中 GMT 的区域 ID 是什么

Vin*_*ade 7 timezone java-8 java-time

我想得到以秒为单位的差异,以确定系统时区是领先还是落后于远程时区。这里的远程时区值是我从数据库获取的“GMT”。它可能是“美国/东部”,我将其转换为“美国/纽约”。但对于 GMT,我收到错误。

ZoneId.systemDefault().getRules().getOffset(Instant.now()).getTotalSeconds() 
    - ZoneId.of("GMT").getRules().getOffset(Instant.now()).getTotalSeconds()
Run Code Online (Sandbox Code Playgroud)

但它给出了以下错误,

Exception in thread "main" java.time.DateTimeException: Invalid ID for ZoneOffset, invalid format: 
    at java.time.ZoneOffset.of(Unknown Source)
    at java.time.ZoneId.of(Unknown Source)
    at java.time.ZoneId.of(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

如何解决这个错误?用什么来代替 GMT?

Arv*_*ash 4

使用Etc/UTC

import java.time.Instant;
import java.time.ZoneId;

public class Main {
    public static void main(String args[]) {
        System.out.println(ZoneId.of("Etc/UTC").getRules().getOffset(Instant.now()).getTotalSeconds());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

0
Run Code Online (Sandbox Code Playgroud)