2011-01-19 68 views
1

我无法从字符串获取今天的时间。我读从一个的UITextField一时间,但日期出来的划时代从字符串创建日期

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"HH-mm"]; 
[formatter setDateStyle:NSDateFormatterNoStyle]; 
[formatter setTimeStyle:NSDateFormatterShortStyle]; 
[formatter setLenient:YES]; 

NSLog(@"Format: %@",[formatter dateFormat]);  
NSDate *now = [formatter dateFromString:[textbox text]]; 
NSLog(@"Time from textfield: %@",now]); 

这给从日志代码以下日期的开始。

2011-01-19 18:56:28.193 MyApp[8284:207] The time for now: 1970-01-01 06:00:00 GMT 

回答

1

设置dateStyletimeStyle的格式将覆盖您手动设置dateFormat。下面应该按预期工作:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"HH-mm"]; 
[formatter setLenient:YES]; 

NSLog(@"Format: %@",[formatter dateFormat]); 

[formatter release]; 

产生的日期对象将接近时代的开始,因为你没有提供的年,月,日。如果你想在文本框代表今天的日期时间的时候,你将不得不在一些额外的代码添加:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"HH-mm"]; 
[formatter setLenient:YES]; 
NSDate *time = [formatter dateFromString:[textbox text]]; 
[formatter release]; 

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *comps = [calendar components:NSYearCalendarUnit | 
               NSMonthCalendarUnit | 
               NSDayCalendarUnit | 
               NSHourCalendarUnit | 
               NSMinuteCalendarUnit 
             fromDate:[NSDate date]]; 
NSDateComponents *timeComps = [calendar components:NSHourCalendarUnit | 
                NSMinuteCalendarUnit 
              fromDate:time]; 

[comps setHour:[timeComps hour]]; 
[comps setMinute:[timeComps minute]]; 
NSDate *date = [calendar dateFromComponents:comps]; 
NSLog(@"Date from textfield: %@",date); 
0
NSDate *todayDate = [NSDate date]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeStyle:NSDateFormatterShortStyle]; 
NSString *currentTime = [dateFormatter stringFromDate:todayDate]; 
NSLog(@"The current time is:%@",currentTime); 
[dateFormatter release]; 
+2

我觉得OP是试图将一个字符串文本字段转换为一个NSDate对象,您的解决方案将当前时间作为字符串提供。 – 2011-01-19 19:10:56