Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(1446159600)
Date date = calendar .getTime();
doesn't give you a Date object representing GMT time. It's still just a wrapper on a millisecond value. If you doSystem.out.println(date.toString());
what is printed will be in the JVM default TimeZone. For me, that's CST so I get:Date date = new Date(1446159600);
What you want to do is set the TimeZone on the DateFormat to get the desired interpretation:DateFormat gmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
gmt.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(gmt.format(date));
Using this the output isI have an int 1446159600 which is UTC/GMT date Thu, 29 Oct 2015 23:00:00 GMT
Date date = new Date(1446159600L * 1000L);
DateFormat gmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
gmt.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(gmt.format(date));