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

Reply via email to