如何在末尾使用 "Z" 获取我当地时间的 UTC 时间?

How to get UTC time of my local time with "Z" at the end?

我想在 java 中获取 UTC 中的当前时间:

那么,我现在在维也纳,当前当地时间是 16:30:29,当前与 UTC 的时差是 2 小时 我想得到

2022-05-27T14:30:29.813Z

最后有这个Z(表示“祖鲁时间”)。

有了这个

public static String getIsoUtcDate() {
    Instant inst = Instant.now();
    return inst.toString();
}

我明白了

2022-05-27T14:30:29.813923100Z

如何去除微秒?

我也试过 SimpleDateFormat,但是最后我无法得到 Z。

您可以使用 OffsetDateTime 并将其偏移量设置为 UTC。然后使用 DateTimeFormatter 格式化它。像这样:

public static String getIsoUtcDate() {
    OffsetDateTime nowUtc = OffsetDateTime.now()
        .withOffsetSameInstant(ZoneOffset.UTC);

    return DateTimeFormatter.ISO_DATE_TIME.format(nowUtc);
}

Instant#truncatedTo

更加灵活。但是对于您的特定情况,有一种更简单的方法。

String output = 
    Instant
    .now()
    .truncatedTo( ChronoUnit.MILLIS )
    .toString() 
;