1

助けてもらっていろいろ試してみましたが、どうしたらいいのかわかりません。これが私が最後にしたことです。

NSDateFormatter *tempFormatter = [[NSDateFormatter alloc]init];
[tempFormatter setDateFormat:@"dd-MM-yyy"];

NSDate *currentDate = [NSDate date];
NSDate *fromDate = [NSString stringWithFormat:@"%@",[tempFormatter stringFromDate:currentDate]];
NSLog(@"currentDate %@", fromDate);

NSDate *toDate = [NSString stringWithFormat:@"%@",[tempFormatter stringFromDate:datePicker.date]];
NSLog(@"toDate %@", toDate);

NSTimeInterval interval = [toDate timeIntervalSinceDate:fromDate];
double leftDays = interval/86400;
NSLog(@"Total interval Between::%g",leftDays);

私が何を間違えたのか教えてください。私が適切に行っていないのはNSDate変換ですか?? ありがとう。

4

4 に答える 4

2

この行は問題を引き起こしています。

 NSDate *toDate = [NSString stringWithFormat:@"%@",[tempFormatter stringFromDate:datePicker.date]];

の型をtoDateNSDate からに変更し__NSCFStringます。NSDate 型のNSTimeInterval両方の引数を取りますが、あなたの場合fromDateは NSDate 型のみです。

これらの行でコードを変更します

NSDate *currentDate = [NSDate date];
    NSDate *toDate = datePicker.date;
NSTimeInterval interval = [toDate timeIntervalSinceDate:currentDate];

それは確かに機能します(inshaAllah)。

于 2012-11-14T05:50:40.387 に答える
2

あなたのコードはすべてめちゃくちゃです - toDate と fromDate の両方が NSDates ではなく文字列です。from の日付は currentDate にする必要があり、toDate は datePicker.date にする必要があります。文字列に変換したり、日付フォーマッタを使用して時間間隔を取得したりする必要はありません。

于 2012-11-14T05:33:10.513 に答える
1

あなたは確かに正しい道を進んでいます。ただし、2 つの NSString を使用して「timeIntervalSinceDate」を呼び出しているようです (fromDate と toDate を NSDates として指定している場合でも、その直後を見てください。これらの 2 つの変数を NSString オブジェクトに設定しています)。

探している間隔を取得するには、次を試してください。

[datePicker.date timeIntervalSinceDate:currentDate];

これで適切な間隔が得られるはずです。さらに、 leftDays を equal に変更することもできます

double leftDays = abs(round(interval/86400));

これにより、leftDays が -1.00005 のような厄介な数値になるのを防ぐことができます。

于 2012-11-14T05:34:12.157 に答える
1

`NSString を NSDate に渡します! このコードは間違っています

試す

NSDate *curDate = [NSDate Date];
NSDate *pickerDate = datepicker.date;

次に、NSTimeInterval を使用してこれらの日付を比較します

于 2012-11-14T05:39:45.903 に答える