java—将指定区域的长历元时间转换为utc的长历元时间

wbgh16ku  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(363)

我需要将多区域(变量)的长历元时间转换为utc的长历元时间。
在乔达时代,我一直在尝试做如下的事情:

long getUTCLong(long timestamp, String timeZone) {
    DateTimeZone zone = DateTimeZone.forID(timeZone);
    DateTime dt = new DateTime(timestamp, zone);
    dt.getMillis();
}

但这行不通。如何使用新的java.time特性实现这一点

7kjnsjlb

7kjnsjlb1#

虽然问题代码使用了joda time,但实际上它要求使用java time api来解决问题,所以这里是:

static long getUTCLong(long timestamp, String timeZone) {
    return Instant.ofEpochMilli(timestamp) // process timestamp as milliseconds since 1970-01-01
                  .atZone(ZoneOffset.UTC).toLocalDateTime() // get pure date/time without timezone
                  .atZone(ZoneId.of(timeZone)) // mark the date/time as being in given timezone
                  .toInstant() // convert to UTC
                  .toEpochMilli(); // get the epoch time in milliseconds since 1970-01-01
}

相关问题