4

私の問題は、iOSアプリの時刻のように、(日付なしで)時刻を表す方法が必要なことです。REST APIから、何かが発生した時刻を示す「13:12:11」のような文字列を取得します。NSStringsNSDateFormatterをNSDatesに変換するために使用しましたが、HH:mm:ss[EDIT :できます、以下を参照してください]

だから私の質問は1-NSTimeInterval(NSDateの代わりに)は時刻を保存するために何を使うべきですか?
2-「03:04:05」を組み込みフレームワークの1つからobjective-cオブジェクトに変換するにはどうすればよいですか。

編集:「HH:mm:ss」のような形式を使用できます。これは、日付部分を2000-01-01に置き換えるだけです。それでも、日付に依存しない時刻表現があると非常に便利です。

4

3 に答える 3

6

OK、みんなありがとう、これが私がやったことです:

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 に答える