I have a linux machine, and its time zone is set as Asia/Qatar. When I am printing Instant.EPOCH with formatter its giving me wrong zone information while for Instant.now() the zone information is correct. Below is my code and its output. Can anyone please help me, why is this discrepancy?
import java.util.Date;
import java.time.format.DateTimeFormatter;
import java.time.Instant;
import java.time.ZoneId;
public class DateTest {
public static void main(String[] args) {
String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS Z";
Instant myInstant = Instant.EPOCH;
Instant myInstantNow = Instant.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern).withZone(ZoneId.systemDefault());
System.out.println(formatter.format(myInstant));
System.out.println(formatter.format(myInstantNow));
}
}
The output of the code is:
1970-01-01T04:00:00.000 +0400
2019-09-29T18:30:14.766 +0300
Java version: "1.8.0_181"
Same code if I run in windows, its working fine. I am getting +0300 for Instant.EPOCH as well.