4

我的问题是我想用某种方式来表示时间(没有日期),比如我的 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 替换日期部分,但是拥有一个独立于日期的时间表示会非常好。

4

3 回答 3

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];

这不是一个优雅的解决方案,但它可以工作,至少对于我需要做的事情,

于 2012-09-27T15:20:09.823 回答
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];
于 2012-09-27T14:57:56.487 回答
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')'"];
于 2014-06-23T20:16:09.713 回答