Yes you need to specify the time zone represented by that particular date-time string.
If you were talking to me on the phone, and you asked me what time it is, wouldn't you also ask me where I am? If I'm in Hawaii I'm going to tell you a different time than if I am in Paris.
The bundled java.util.Date and .Calendar classes are notoriously troublesome. Avoid them. Use either Joda-Time or the new java.time package in Java 8 (inspired by Joda-Time, defined by JSR 310).
A Joda-Time DateTime object does indeed know its assigned time zone, whereas a java.util.Date has no time zone though its toString
method applies the JVM's default time zone when generating as string.
Joda-Time
Here is some example code using Joda-Time 2.3.
java.util.Date date = new java.util.Date();
// Convert a Date into a Joda-Time DateTime.
// Specify a time zone rather than rely on default.
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Istanbul" );
DateTime dateTime = new DateTime( date, timeZone );
DateTime dateTimeUtc = dateTime.withZone( DateTimeZone.UTC );
Dump to console…
System.out.println( "date: " + date );
System.out.println( "dateTime: " + dateTime );
System.out.println( "dateTimeUtc: " + dateTimeUtc );
When run…
date: Mon Mar 31 08:13:37 PDT 2014
dateTime: 2014-03-31T18:13:37.314+03:00
dateTimeUtc: 2014-03-31T15:13:37.314Z