5

現在の時と分を整数で取得したいのですが。したがって、現在が午前3時16分である場合、3と16の2つの整数を取得したいと思います。

しかし、1970年以降の秒数を示すように見えます[NSDate date]。または、現在の時刻表現の文字列を与えることができますが、それらを整数として取得する簡単な方法はありませんか?

「現在の時刻を取得する」に投稿がありますが、これには関係がNSDateComponentsありNSCalendarますか?それはあまりにも複雑です...必要だったのは次のようなものだけです

NSDate *date = [NSDate date];
int hour = [date getHour];     // which is not possible

NSDate3つのクラス、、NSDateComponentsを使用NSCalendarして現在の時間を整数として取得するよりも簡単な方法はありますか、または通常、Objective-Cでは、通常もC言語localtimeを使用tmして時間を整数として取得しますか?

4

3 に答える 3

17

1970年以降の秒の解釈方法は、使用しているカレンダーによって異なります。他に選択肢はありません。幸い、設定はそれほど難しくありません。多くの例については、「データと時間のプログラミングガイド」を参照してください。あなたの場合:

// Assume you have a 'date'
NSCalendar *gregorianCal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComps = [gregorianCal components: (NSHourCalendarUnit | NSMinuteCalendarUnit)
                                              fromDate: date];
// Then use it
[dateComps minute];
[dateComps hour];

ですから、それほど複雑ではありません。

また、これを次のようにカプセル化するために「クラスカテゴリ」を作成できることにも注意してください。

 @interface NSDate (MyGregorianDateComponents)
  - (NSInteger) getGregorianHour;
  - (NSInteger) getGregorianMinute;
  @end
于 2012-06-02T10:32:24.190 に答える
9

NSDate特定の参照日から経過した時間を保持するだけで、これからより意味のある数値を取得するには(たとえば、DST、うるう年、その他すべての愚かな時間の処理を行った後)、NSDateComponents適切なを使用する必要がありますNSCalendar

于 2012-06-02T10:17:59.510 に答える
1

私のクラスがお手伝いします。 https://github.com/TjeerdVurig/Vurig-Calendar/blob/master/Vurig%20Calendar/NSDate%2Bconvenience.m

私はあなたが微細な部分を理解できると確信しています:)

于 2012-06-02T12:35:12.770 に答える