views:

149

answers:

3

I have parsed a java.util.Date from a String but it is setting the local timezone as the timzone of the date object.

The timezone is not specified in the String from which Date is parsed. I want to set a specific timezone of the date object.

How can I do that?

+3  A: 

java.util.Calendar is the usual way to handle time zones using just JDK classes. Apache Commons has some further alternatives/utilities that may be helpful. Edit Spong's note reminded me that I've heard really good things about Joda Time (though I haven't used it myself).

T.J. Crowder
+3  A: 

Use DateFormat. For example,

    SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date date = isoFormat.parse("2010-05-23T09:01:02");
ZZ Coder
+2  A: 

Be aware that java.util.Date objects do not contain any timezone information by themselves - you cannot set the timezone on a Date object. The only thing that a Date object contains is a number of milliseconds since the "epoch" - 1 January 1970, 00:00:00 UTC.

As ZZ Coder shows, you set the timezone on the DateFormat object, to tell it in which timezone you want to display the date and time.

Jesper