Ios NSDate但无NSTime,如何转换时间的字符串表示形式(无日期)

Ios NSDate但无NSTime,如何转换时间的字符串表示形式(无日期),ios,nsdate,nsdateformatter,nstimeinterval,Ios,Nsdate,Nsdateformatter,Nstimeinterval,我的问题是我想有一些方法来表示时间(不带日期),比如我的iOS应用程序中的时间。从REST api中,我得到了类似“13:12:11”的字符串,它显示了事件发生的时间,我使用了NSDateFormatter将NSStrings转换为NSDates,但据我所知,它不接受仅包含时间组件的日期格式,如HH:mm:ss[编辑:可以,请参见下文] 所以我的问题是 1-NSTimeInterval(而不是NSDate)是我应该用来存储一天中的时间的吗? 2-如何将“03:04:05”转换为内置框架中的和ob

我的问题是我想有一些方法来表示时间(不带日期),比如我的iOS应用程序中的时间。从REST api中,我得到了类似“13:12:11”的字符串,它显示了事件发生的时间,我使用了
NSDateFormatter
将NSStrings转换为NSDates,但据我所知,它不接受仅包含时间组件的日期格式,如
HH:mm:ss
[编辑:可以,请参见下文]

所以我的问题是 1-NSTimeInterval(而不是NSDate)是我应该用来存储一天中的时间的吗?
2-如何将“03:04:05”转换为内置框架中的和objective-c对象

编辑:您可以使用诸如“HH:mm:ss”之类的格式,它只是将日期部分替换为2000-01-01 尽管如此,拥有一个独立于日期的时间表示形式还是非常好的。

您可以使用它根据时间创建日期。您可以根据当前日期或未来/过去日期向年份添加值

NSDateComponents *component=[[NSDateComponents  alloc] init];
[component setHour:yourHour];
[component setMinute:yourMinutes];
[component setYear:yourYear];
[component setMonth:yourMonth];
[component setDay:yourDaty];
NSCalendar *calendar=[NSCalendar currentCalendar];
NSDate *date=[calendar dateFromComponents:component];

好的,谢谢大家,这就是我最后要做的:

NSString * timeAsString = "12:26:07";
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm:ss"];
NSDate * dateZero = [dateFormatter dateFromString:@"00:00:00"];
NSDate * dc = [dateFormatter dateFromString:timeAsString];
NSTimeInterval startTime = [dc timeIntervalSinceDate:dateZero];

这不是一个优雅的解决方案,但至少在我需要做的事情上是有效的,

NSDate*myDateVariable

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];    //Not shown
[someDateLabel setText:[dateFormatter stringFromDate:[myDateVariable]]];

//OR FOR BESPOKE FORMATTING
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"'Due' EEEE d MMM yyyy, h:mm a"];
[someDateLabel setText:[dateFormatter stringFromDate:[myDateVariable]]];

//Time using users 24/12 hour preference:
[dateFormatter setDateFormat:@"HH:mm"];

//Time using 12 hour AM/PM format:
[dateFormatter setDateFormat:@"h:mm a"];

//Day and date using abbreviated words:
[dateFormatter setDateFormat:@"' ('EEE d MMM yyyy')'"];

//Day and date using full words:
[dateFormatter setDateFormat:@"' ('EEEE d MMMM yyyy')'"];

希望这能有所帮助。这篇文章展示了如何使用带有日期[1]的字符串:如果它只是一天中的某个时间,那么将它存储为日期或让它表示日期似乎没有什么意义。该值用于什么?它是如何呈现给用户的?比如说,我不希望有一个倒计时计时器在特定时间开始或结束(不涉及日期,每天都会发生)。与时间无关的日期有很多用例,你知道为什么没有
NSTime
?啊,所以现在只是表示一整套日期的时间。这是有道理的。老实说,
NSDate
NSDateComponents
处理简单字符串和数字所不能处理的问题,我认为类的
NSTime
没有那么大的用处。使用J2theC的解决方案,每天为你的倒计时创建一个新的日期。你知道没有什么
NSTime