This question already has answers here:
Can't convert from NSString to NSDate

(2个答案)


7年前关闭。




我正在尝试将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);

我总是在nslog上得到空结果。我尝试在使用NSLog之前将dateFromString转换回字符串,但仍然收到空消息。

根据要求,这里是我使用的更多代码:

我有一个调用uidatepicker的文本字段,该字段加载在super viewdidload上:
[_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];

最佳答案

一种从时间午夜起计算秒数的方法(不一定是最简单的方法);

// 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

关于ios - iOS将NSString的小时数转换为秒数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18791316/

10-13 08:50
查看更多