tl;dr
Instant.ofEpochMilli( millisSinceEpoch )
GMT represents mean solar time, and is practically synonymous with UTC. Do not confuse this with the time zone Europe/London
which has observed Daylight Saving Time (DST).
java.time
Never use java.sql.Time
, DateFormat
, or any of the legacy date-time classes bundled with the earliest versions of Java.
The modern solution uses java.time classes.
I assume your count of milliseconds was since the epoch reference of first moment of 1970 in UTC, 1970-01-01T00:00Z.
long millisSinceEpoch = currentMessage.getTimestampMillis();
Convert to a Instant
object.
Instant instant = Instant.ofEpochMilli( millisSinceEpoch ) ;
An Instant
is always in UTC, by definition. So you will not have any surprises from Daylight Saving Time (DST).
Generate text in standard ISO 8601 format.
String output = instant.toString() ;
You did not specify your example value of epoch milliseconds. But we can work backwards to deduce it.
// Example it is 6-28-15 9:22
LocalDate ld = LocalDate.of( 2015 , Month.JUNE , 28 ) ;
LocalTime lt = LocalTime.of( 9 , 22 ) ;
LocalDateTime ldt = LocalDateTime.of( ld , lt ) ;
OffsetDateTime odt = ldt.atOffset( ZoneOffset.UTC ) ;
Instant instant = odt.toInstant() ;
long epochMilli = instant.toEpochMilli() ;
1435483320000
See this code run live at IdeOne.com.

About java.time
The java.time framework is built into Java 8 and later. These classes supplant the troublesome old legacy date-time classes such as java.util.Date
, Calendar
, & SimpleDateFormat
.
To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310.
The Joda-Time project, now in maintenance mode, advises migration to the java.time classes.
You may exchange java.time objects directly with your database. Use a JDBC driver compliant with JDBC 4.2 or later. No need for strings, no need for java.sql.*
classes. Hibernate 5 & JPA 2.2 support java.time.
Where to obtain the java.time classes?