我的问题是我想用某种方式来表示时间(没有日期),比如我的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替换日期部分 拥有一个独立于日期的时间表示仍然是非常好的。
答案 0 :(得分:6)
好的,谢谢大家,这就是我最终做的事情:
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];
这不是一个优雅的解决方案,但它起作用,至少对我需要做的事情来说,
答案 1 :(得分:4)
您可以使用NSDateComponent根据时间创建日期。您可以根据当前日期或未来/过去日期为年份添加值。
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];
答案 2 :(得分:0)
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')'"];