如何将Nstring转换为NSDate?

时间:2015-10-30 11:36:50

标签: objective-c nsdate nsdateformatter

我想将nsstring转换为nsdate 我有字符串有这个值

08:00:00

我想转换它,所以我写了这段代码

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];  
NSDate *startDate = [formatter dateFromString:_startTime];
NSLog(@"%@",startDate);

_startTime有此值= 08:00:00

但是我显示它之后的startDate,它有这个值

2000-01-01 06:00:00 +0000

更新我写了这段代码

 NSString *dateString = _startTime;
NSDateFormatter *formatter= [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[formatter setDateFormat:@"HH:mm:ss"];

NSDate *startDate = [[NSDate alloc] init];
// voila!
startDate = [formatter dateFromString:dateString];

NSLog(@"%@",startDate);

我希望输出为08:00:00

2 个答案:

答案 0 :(得分:0)

没有约会你就无法获得NSDate! 如果你想从NSDate访问时间,你需要使用NSDateComponents(或NSTimeInterval)。

使用NSDateComponents从NSDate访问时间:

NSString *startTime = @"08:00:00";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
NSDate *startDate = [formatter dateFromString:startTime];

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:startDate];
NSLog(@"%d:%d:%d", [components hour], [components minute], [components second]);

我没有了解更改字符串_startTime的目的,您想要比较日期吗?

编辑:

NSString *startTime = @"08:00:00";
NSString *endTime = @"23:00:00";

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
NSDate *startDate = [formatter dateFromString:startTime];
NSDate *endDate = [formatter dateFromString:endTime];

NSTimeInterval difference = [endDate timeIntervalSinceDate:startDate];

NSInteger temp = difference;

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

for (int i = 0; (i < difference && [newDate compare:startDate] == NSOrderedDescending); ++i)
{

    newDate = [startDate dateByAddingTimeInterval:(temp - i*60*10)];

    NSLog(@"%@",newDate);

}

运行此命令并使用NSDateComponents记录您想要的内容!

答案 1 :(得分:0)

使用此代码我认为这个可以帮助您..

NSString *dateStr = @"08:00:00";
NSDateFormatter *datFormatter = [[NSDateFormatter alloc] init];
[datFormatter setDateFormat:@"HH:mm:ss"];
NSDate* mydate = [datFormatter dateFromString:dateStr];
NSLog(@"date: %@", [datFormatter stringFromDate:mydate]);

我认为这是你真正想要的......