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
>>> [email protected]
>>> 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
>> [email protected]
>> 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
> [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/joda-interest