--- a/src/jdk.jfr/share/classes/jdk/jfr/consumer/TimeConverter.java Wed Dec 05 09:34:01 2018 -0500
+++ b/src/jdk.jfr/share/classes/jdk/jfr/consumer/TimeConverter.java Wed Dec 05 16:40:12 2018 +0100
@@ -25,6 +25,12 @@
package jdk.jfr.consumer;
+import java.time.DateTimeException;
+import java.time.ZoneOffset;
+
+import jdk.jfr.internal.LogLevel;
+import jdk.jfr.internal.LogTag;
+import jdk.jfr.internal.Logger;
import jdk.jfr.internal.consumer.ChunkHeader;
/**
@@ -34,11 +40,22 @@
private final long startTicks;
private final long startNanos;
private final double divisor;
+ private final ZoneOffset zoneOffet;
- TimeConverter(ChunkHeader chunkHeader) {
+ TimeConverter(ChunkHeader chunkHeader, int rawOffset) {
this.startTicks = chunkHeader.getStartTicks();
this.startNanos = chunkHeader.getStartNanos();
this.divisor = chunkHeader.getTicksPerSecond() / 1000_000_000L;
+ this.zoneOffet = zoneOfSet(rawOffset);
+ }
+
+ private ZoneOffset zoneOfSet(int rawOffset) {
+ try {
+ return ZoneOffset.ofTotalSeconds(rawOffset / 1000);
+ } catch (DateTimeException dte) {
+ Logger.log(LogTag.JFR_SYSTEM_PARSER, LogLevel.INFO, "Could not create ZoneOffset from raw offset " + rawOffset);
+ }
+ return ZoneOffset.UTC;
}
public long convertTimestamp(long ticks) {
@@ -48,4 +65,8 @@
public long convertTimespan(long ticks) {
return (long) (ticks / divisor);
}
+
+ public ZoneOffset getZoneOffset() {
+ return zoneOffet;
+ }
}