1

NSString を秒に変換しようとしていますが、何か間違っています。これは私のコードです:

_myTextField のテキストは、uidatepicker から HH:mm の形式で取得されます。

NSString *teste = [[NSString alloc]init];
teste = [_myTextField text];

NSDateFormatter *formatarteste = [[NSDateFormatter alloc]init];

[formatarteste setDateFormat:@"s"];

NSDate *dateFromString = [[NSDate alloc]init];

dateFromString = [formatarteste dateFromString:teste];

NSLog(@"%@", dateFromString);

i nslog で常に null の結果を取得します。NSLog を使用する前に、dateFromString を文字列に変換しようとしましたが、まだ null メッセージが表示されました。

ここで要求されたように、私が使用しているコードの詳細は次のとおりです。

スーパービューdidloadにロードされる、uidatepickerを呼び出すテキストフィールドがあります。

[_myTextField setText:@"03:00"];
UIDatePicker *datepicker = [[UIDatePicker alloc]init];
//[datepicker setDate:[NSDate date]];
[datepicker setDatePickerMode:UIDatePickerModeTime];

[datepicker addTarget:self action:@selector(updateTextField:) forControlEvents:UIControlEventValueChanged];
[self.myTextField setInputView:datepicker];

これが updateTextfield 関数です。

 UIDatePicker *picker = (UIDatePicker*)self.myTextField.inputView;
 NSDateFormatter *formatar = [[NSDateFormatter alloc]init];
 [formatar setDateFormat:@"HH:mm"];


 NSString *textoDoField = [formatar stringFromDate:picker.date];
 self.myTextField.text = [NSString stringWithFormat:@"%@", textoDoField];
4

2 に答える 2

5

時刻から真夜中までの秒数を計算する 1 つの方法 (必ずしも最も単純であるとは限りません)。

// NSString *teste = @"14:52";

NSDateFormatter *formatarteste = [[NSDateFormatter alloc]init];
[formatarteste setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[formatarteste setDateFormat:@"HH:mm"];

NSDate *dateFromString = [formatarteste dateFromString:teste];

NSTimeInterval interval = 
  [dateFromString timeIntervalSinceDate:
    [NSDate dateWithString: @"2000-01-01 00:00:00 +0000"]];

NSLog(@"%f", interval);

// >>> 53520

...またはもう少し簡単です。

// NSString *teste = @"14:52";

int h,m;
const char *bytes = [teste UTF8String];
sscanf(bytes, "%d:%d", &h,&m);

int seconds = h*3600+m*60;

NSLog(@"%d", seconds);

// >>> 53520
于 2013-09-13T17:10:37.567 に答える