Date
is always UTC-based… or time-zone neutral, depending on how you want to view it. A Date
only represents a point in time; it is independent of time zone, just a number of milliseconds since the Unix epoch. There’s no notion of a “local instance of Date
.” Use Date
in conjunction with Calendar
and/or TimeZone.getDefault()
to use a “local” time zone. Use TimeZone.getTimeZone("Europe/Madrid")
to get the Madrid time zone.
… or use Joda Time, which tends to make the whole thing clearer, IMO. In Joda Time you’d use a DateTime
value, which is an instant in time in a particular calendar system and time zone.
In Java 8 you’d use java.time.ZonedDateTime
, which is the Java 8 equivalent of Joda Time’s DateTime
.