src/jdk.jfr/share/classes/jdk/jfr/consumer/TimeConverter.java
changeset 52850 f527b24990d7
parent 50113 caf115bb98ad
child 57360 5d043a159d5c
--- 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;
+    }
 }