2011-01-19 4 views
1

今日の文字列から時間を取得するのに問題があります。これは、ログコードから次の日付を与えるエポックの開始として文字列から日付を作成する

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]); 

を私はUITextFieldですから、時間に読んでいますが、日付が出ています。

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オブジェクトにテキストフィールドに文字列を変換しようとしていると思いますあなたのソリューションは現在の時刻を文字列として提供します。 –

関連する問題