0

これが私のコードです:

picker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0,40,0,0)];
picker.datePickerMode = UIDatePickerModeDateAndTime;
picker.minuteInterval = 5;
picker.minimumDate = [NSDate date];

わかりました、ここまでは問題なく動作しています。(画像: http://img29.imageshack.us/img29/8277/snap1r.png )

DatePicker で過ぎた日はすべてグレー表示されていました。選択できません。分間隔は 5 です。

しかし今、すでにグレー表示されている行をクリックすると。DatePicker の日付は、現時点の時間を返します。

例:DatePicker で「9」をクリックしました (もう時間は過ぎています) そして、現在のシステム時間は

22:27:57

DatePicker の日付が返されます: (画像: http://img42.imageshack.us/img42/2760/nslog.png )

2012-04-08 22:27

私の分間隔は 5 分なので、ピッカーが 5 で割り切れない値を返すことを望みません。これにより、プログラムがクラッシュします。

これはバグですか?それとも私の問題ですか?ありがとう!

------検査官gへ(英語が下手ですみません)

Datepicker の minuteInterval は 5 なので、DatePicker の date の戻り値は 5 で割り切れる分 (0, 5 , 10 , 15 など) のみを返します。

また、プロパティ minimumDate を [NSDate date] に設定しているため、ユーザーは過去の日付を選択できません。

しかし、ユーザーが過去の行 (灰色表示) をクリックすると、DatePicker の日付はその時点の時刻を返します。

したがって、日付の分は任意の値(0〜60)にすることができますが、希望するものではありません(0、5、10、15 ....)

私は説明するために最善を尽くしました>"<許してください。


検査官へ g.

あなたのコードをありがとう、私は突然私の問題を解決する良い方法があることに気付きました. しかし、理由はわかりません。あなたのコードを使用すると、いくつかの問題が発生します。(timeZoneくらいだと思います)

しかし、私はあなたの論理に従い、コードを書き直します。あなたと共有します:

unsigned unitFlags_ = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps_ = [gregorian components:unitFlags_ fromDate:[jRemindPicker date]];
NSInteger remainder = [comps_ minute] % 5;

NSLog(@"%i-%i-%i %i:%i", comps_.year, comps_.month, comps_.day, comps_.hour, comps_.minute);

if ( remainder ) {
   /* My Own code /*
} else {
  /* My Own Code /*
}
[gregorian release];
4

1 に答える 1