Joda Time, like Java's Calendar, does manage DST transitions. If you create your DateTimeZone using the appropriate ZoneInfo ID (such as "America/Chicago"), then the DateTimeZone will have all the DST rules and will reflect them.
DateTimeZone zone = DateTimeZone.forId("America/Chicago"); If you need to know whether a particular DateTime falls within DST for a particular time zone, you can use the isStandardOffset() method. DateTime now = new DateTime(); boolean isInDST = !zone.isStandardOffset(now.getMillis()); Note that you don't need to check for DST to make any adjustments to the DateTime. Joda Time handles that automatically. On Nov 23, 2008, at 12:48 AM, Ron Olson wrote: > Ah, okay, this is where my understanding of time and time zones fell > apart; I didn't realize that a fixed offset would not equal a named > time zone. Thinking about the larger world, it makes sense; -6 is not > just US Central Time; sorry about that. :) > > So if I may, what would be a best-practice for dealing with time > zones, DST, etc. and Joda? Can Joda figure out whether a date/time > falls within DST based on the date & time zone? It seems like there's > enough there that it should be possible, but given my earlier > question, I'm not going to assume anything. :) > > My previous experience with time zones was a specialized mail program > in C++ where I had to write it all myself and it was a total > nightmare; calculating the date against the beginning of DST and end > of DST and then, (assuming a US-centric audience, which this program > was), based on the TZ, deciding to apply an offset or not. Total > madness...I was debugging it for a week. > > I guess I have a knee-jerk reaction to time zones and DST in that on > one level, it seems pretty straightforward. But on many other levels, > it's just complete madness (to me, anyway). > > > On 11/23/08, Brian S O'Neill <[EMAIL PROTECTED]> wrote: >> Calling forOffsetHours returns a time zone with a fixed offset, as >> per >> the documentation. A fixed offset of 6 hours is not equivalent to >> CST, >> which has DST rules and other historical transitions. There isn't any >> API in Joda-Time which returns time zones which match a given offset >> because it would return many of them. >> >> >> Ron Olson wrote: >>> Hi all- >>> >>> I assume I'm doing something wrong here, but I've been going through >>> the docs and haven't come up with a reason why this should be >>> happening. >>> >>> Basically, if I create a new DateTime object and pass it a >>> DateTimeZone instance called from forOffsetHours(), when I try to >>> print the time using the DateTimeFormatter, I get -06:00 instead of >>> CST. Below is an example: >>> >>> import org.joda.time.DateTime; >>> import org.joda.time.DateTimeZone; >>> >>> import org.joda.time.format.DateTimeFormat; >>> import org.joda.time.format.DateTimeFormatter; >>> >>> public class TimeTest >>> { >>> public static void main(String[] args) >>> { >>> DateTime dt = new DateTime(); >>> DateTimeFormatter calendarTimeFormat = >>> DateTimeFormat.forPattern("hh:mm a z"); >>> System.out.println(dt.toString() + " - " + >>> calendarTimeFormat.print(dt)); >>> >>> Integer timeZoneOffset = -6; >>> >>> // And put them together >>> DateTime birthDateTime = new DateTime( 2004, >>> 12, >>> >>> 27 >>> , >>> >>> 16 >>> , >>> >>> 44 >>> , >>> >>> 0 >>> , >>> >>> 0 >>> , >>> >>> DateTimeZone >>> .forOffsetHours(timeZoneOffset)); >>> >>> System.out.println(birthDateTime.toString() + " - " + >>> calendarTimeFormat.print(birthDateTime)); >>> } >>> >>> } >>> >>> This will print (as of a couple of minutes ago): >>> >>> 2008-11-22T23:06:27.399-06:00 - 11:06 PM CST >>> 2004-12-27T16:44:30.533-06:00 - 04:44 PM -06:00 >>> >>> >>> Might anyone have an idea why this is happening? Any help would be >>> appreciated. >>> >>> Ron >>> >> >>> ------------------------------------------------------------------------- >>> This SF.Net email is sponsored by the Moblin Your Move Developer's >>> challenge >>> Build the coolest Linux based applications with Moblin SDK & win >>> great prizes >>> Grand prize is a trip for two to an Open Source event anywhere in >>> the world >>> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >>> _______________________________________________ >>> Joda-interest mailing list >>> Joda-interest@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/joda-interest >>> >>> >> >> ------------------------------------------------------------------------- >> This SF.Net email is sponsored by the Moblin Your Move Developer's >> challenge >> Build the coolest Linux based applications with Moblin SDK & win >> great prizes >> Grand prize is a trip for two to an Open Source event anywhere in >> the world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> Joda-interest mailing list >> Joda-interest@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/joda-interest >> > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win > great prizes > Grand prize is a trip for two to an Open Source event anywhere in > the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Joda-interest mailing list > Joda-interest@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/joda-interest ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Joda-interest mailing list Joda-interest@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/joda-interest