NTP到UTC的时间戳; 32位无符号秒+ 32位分数字段[重复]

问题描述 投票:0回答:1

T1 = C50204ECEC42EE92

Taq = Sak0204

时间戳格式包括作为跨越136年的字段的第一个32位无符号秒和解析232皮秒的32位分数字段。

T1可以解析为2004年9月27日03:18:04.922896299 UTC。如何编写程序将T2或类似内容转换为UTC时间。

java utc ntp
1个回答
2
投票
public static ZonedDateTime parseNtp(String ts) {
    long seconds = Long.parseLong(ts.substring(0, 8), 16);
    long fraction = Long.parseLong(ts.substring(8), 16);
    return LocalDateTime.parse("1900-01-01T00:00:00").atZone(ZoneId.of("UTC"))
            .plusSeconds(seconds)
            .plusNanos((long)(1000000000.0 / (1L << 32) * fraction));
}

Ideone Demo

© www.soinside.com 2019 - 2024. All rights reserved.