2011-06-12 74 views
0
NSLog(@"%@ - %@ - %@",currTime,sunrise,sunset); 
NSString *curtime = [[currTime substringToIndex:(currTime.length-4)] stringByAppendingString:@"-0000"]; 
NSDateFormatter *formatter1 = [[NSDateFormatter alloc]init]; 
NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]autorelease]; 
[formatter1 setDateFormat:@"EEE, dd MMM yyyy h:mm aZ"]; 
[formatter1 setLocale:locale]; 

NSDate *time = [formatter1 dateFromString:curtime]; 
[formatter1 setDateFormat:@"EEE dd MMM yyyy"]; 
NSString *zone = [formatter1 stringFromDate:time]; 
NSString *r = [sunrise stringByAppendingString:zone]; 
NSString *s = [sunset stringByAppendingString:zone]; 

[formatter1 setDateFormat:@"hh:mm aEEE dd MMM yyyy"]; 
NSDate *rise = [formatter1 dateFromString:r]; 
NSDate *set = [formatter1 dateFromString:s]; 

unsigned int flags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit; 
NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *components1 = [calendar components:flags fromDate:rise]; 
NSDateComponents *components2 = [calendar components:flags fromDate:set]; 
NSDateComponents *components3 = [calendar components:flags fromDate:time]; 

NSInteger riseHour = [components1 hour]; 
NSInteger setHour = [components2 hour]; 
NSInteger timeHour = [components3 hour]; 

NSLog(@"\nSunrise: %@ \nSunset: %@ \nCurrent: %@",rise,set,time); 
NSLog(@"Rise: %i Set: %i Time: %i",riseHour,setHour,timeHour); 

我希望這個工作。但是,看看下面的輸出:NSDate弄亂了我的約會!錯誤的時區?

孫,2011年6月12日上午1時54分CDT - 上午06點33 - 下午8:34

日出:2011-06-11 21時33分〇〇秒+0000

日落時間:2011-06-12 11點34分00秒+0000

電流:2011-06-12 1點54分00秒+0000

上升:6 <正確

套裝:20 < corr ECT

時間:10 <錯誤

回答

3

嘗試設置時區爲GMT-0上都格式化和日曆。你可能會感到驚喜。

[NSTimeZone timeZoneForSecondsFromGMT:0] 
+2

+1首先我試了一下。然後我感到驚喜。 – bearMountain 2012-01-03 19:15:45

+0

我很高興它爲你工作! – 2012-01-03 20:08:21