2011-09-22 77 views
0

在我summarydict,我有一种被称为全date_generated,它看起来像:09月22日下午2:33,我想将它转换成一个NSDate,这样我可以在以后给它成重复计时器。NSDateFormatter设置日期至1970年

因此,这里是我的代码:

ALog(@"Last update time is: %@", [[summarydict objectForKey:@"root"]objectForKey:@"date_generated"]); 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLenient:YES]; 
[dateFormatter setDateFormat:@"MM dd, h:mm a"]; 
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]]; 
NSDate *date = [dateFormatter dateFromString:[[summarydict objectForKey:@"root"]objectForKey:@"date_generated"]]; 
ALog(@"Using timezone: %@", [dateFormatter timeZone]); 
ALog(@"Last updated time: %@", date); 
ALog(@"Current time: %@", [NSDate dateWithTimeIntervalSinceNow:0]); 
ALog(@"Next update time: %@", [date dateByAddingTimeInterval:600]); 

这里就是我的了:

Last update time is: Sep 22, 2:33 PM 
Using timezone: America/New_York (EDT) offset -14400 (Daylight) 
Last updated time: 1970-09-22 18:33:00 +0000 
Current time: 2011-09-22 18:43:05 +0000 
Next update time: 1970-09-22 18:43:00 +0000 

我明白NSLog(我的考勤记录)不关心timezoon,因此通过显示其作为GMT timezoon是好的,但我怎么能让formatter认为我有Sep 22,2:33 PM是本年度?我有[dateFormatter setLenient:YES];但它不起作用。

谢谢!

+0

简单的方法:添加一年的字符串。 – Nekto

回答

1

你觉得这是什么:

NSString *str = [NSString stringWithFormat:@"2011 %@", [[summarydict objectForKey:@"root"]objectForKey:@"date_generated"]]; 
NSLog(@"Last update time is: %@", str); 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLenient:YES]; 
[dateFormatter setDateFormat:@"yyyy MM dd, h:mm a"]; 
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]]; 
NSDate *date = [dateFormatter dateFromString:str]; 
NSLog(@"Using timezone: %@", [dateFormatter timeZone]); 
NSLog(@"Last updated time: %@", date); 
NSLog(@"Current time: %@", [NSDate dateWithTimeIntervalSinceNow:0]); 
NSLog(@"Next update time: %@", [date dateByAddingTimeInterval:600]); 
+0

stringWithFormat,当然? – jrturton

+0

@jrturton thanx – Nekto

+0

我使用这个而不是@“2011”,以便该应用程序明年仍能正常工作。 :D [dateFormatter setDateFormat:@“yyyy”];'和 'NSString * lastUpdateTime = [NSString stringWithFormat:@“%@%@”,[dateFormatter stringFromDate:[NSDate dateWithTimeIntervalSinceNow:0]] [[summarydict objectForKey: @ “根”] objectForKey:@ “DATE_GENERATED”]];' –