Roland, John,

Thanks for the response. I am sure your explanation is correct. I seem to 
recall that back in 1970 Daylight Saving Time started at the end of April, so 
that is why I am getting different results, as now it starts on the second 
Sunday of March.

I should probably fill in my date object with today's date before converting to 
a string just to be safe.

Don

On 2012-03-24, at 9:58 PM, Roland King wrote:

> 
> On Mar 25, 2012, at 11:14 AM, Donald Hall wrote:
> 
>> Can anyone explain what is going on here:
>> 
>>       NSDate *now = [NSDate date];
>>       NSLog(@"now is %@", now);
>> 
>>       NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
>>       [dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; // this is MDT 
>> for me
>>       [dateFormatter setDateFormat:@"h:mm a"];
>>       NSString *newDateString = [dateFormatter stringFromDate:now];
>>       NSLog(@"stringFromDate=%@", newDateString);
>> 
>>       NSDate *newDateFromString = [dateFormatter 
>> dateFromString:newDateString];
>>       NSLog(@"new date from string=%@", newDateFromString);
>> 
>>       newDateString = [dateFormatter stringFromDate:now];
>>       NSLog(@"2nd stringFromDate=%@", newDateString);
>> 
>> result:
>> 
>> 2012-03-24 20:57:18.976 calendardatetest[77052:707] now is 2012-03-25 
>> 02:57:18 +0000
>> 2012-03-24 20:57:18.977 calendardatetest[77052:707] stringFromDate=8:57 PM
>> 2012-03-24 20:57:18.978 calendardatetest[77052:707] new date from 
>> string=1970-01-02 03:57:00 +0000
>> 2012-03-24 20:57:18.979 calendardatetest[77052:707] 2nd stringFromDate=8:57 
>> PM
>> 
>> "now" is what I expected as the test was done at 8:57 PM local time, which 
>> being MDT is 6 hours behind GMT
>> 
>> When I go in reverse using just the time string, the time for the new date 
>> object seems to ignore Daylight Saving Time - it gives 3:57 on the next day 
>> instead of 2:57.However, if I create a new date string from this I get the 
>> correct local time again, with DST taken into account. (I don't care about 
>> the y-m-d part of the date object in my application.)
>> 
> 
> You need to care about the YMD portion of the date as that determines whether 
> you are MST or MDT. So yes, today, 8.57pm local is 2.57pm UTC as your code 
> shows, but on 1 Jan 1970, 8.57pm local was 3,57am the next day. 
> 
> And your timezone isn't really MDT I think, that timezone you get from [ 
> NSTimeZone localTimeZone ] is a complicated object which represents a place 
> only,  not a part of the year. If you check the name property on it, you 
> should get something like America/Denver, America/Boise, America/Shiprock or 
> America/Phoenix. So it cares what date you give it and it's doing the correct 
> thing. 
> 
> 
> 


_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to