The answer by T.J. Crowder is correct.
Joda-Time || java.time > java.util.Date
Better to use either the Joda-Time library or the similar java.time package built into Java 8. Either is vastly superior to the mess that is the java.util.Date and .Calendar classes.
Assign Time Zone
In both of these libraries, a date-time object knows it's own assigned time zone. If not specified, the JVM’s default time zone is applied. Better to specify the desired time zone rather than rely implicitly on default.
Use proper time zone names. Avoid the common 3 or 4 letter codes which are neither standardized nor unique.
In the example below, Montréal is five hours behind UTC.
Joda-Time Example
Here is a Joda-Time 2.6 example.
DateTimeZone zoneMontreal = DateTimeZone.forID( "America/Montreal" );
DateTime dateTimeZeroInMontreal = new DateTime( 0L, zoneMontreal );
DateTime dateTimeZeroInUtc = dateTimeZeroInMontreal.withZone( DateTimeZone.UTC );
When run.
dateTimeZeroInMontreal : 1969-12-31T19:00:00.000-05:00
dateTimeZeroInUtc : 1970-01-01T00:00:00.000Z