3

私の人生ではうまくいかないので、これは最後の手段です!

ユーザーの既定値で (applicationWillTerminate を使用して) アプリを閉じる日付を設定しています

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDate *timeClosed = [[NSDate alloc] init];
[defaults setObject: timeClosed forKey:@"svdTimeClosedApp"];

次に、アプリが起動したら、今回は次を使用して比較したい

NSDate *timeSaved = svdTimeClosedApp;
NSDate *timeNow = [[NSDate alloc] init];
double timeInterval = [timeSaved timeIntervalSinceDate:timeNow];
NSLog(@"time now = %@, time saved = %@, time diff = %@", timeNow, timeSaved, [NSString stringWithFormat:@"%d",timeInterval]);

約 20 秒の適切にフォーマットされた文字列が表示されることを期待して、これをログ ウィンドウに出力しようとしました。問題は、2047868928 として出てくることです!

何か案は?!

(以下のログ ウィンドウの出力)

time now = 2009-12-19 20:54:02 +0000, time saved = 2009-12-19 20:48:29 +0000, time diff = 2047868928

助けてくれてありがとう!

4

3 に答える 3

10

いくつかの問題があります。まず、stringWithFormat:%d ではなく %g を使用したい場合、%d は整数値用です。また、[timeNow timeIntervalSinceDate:timeSaved]現在の呼び出しで負の値が得られるようにする必要があります。

于 2009-12-19T21:26:44.863 に答える
0

計算が逆だと思いtimeIntervalませんか?言いたいことは逆だと思います。

double timeInterval = [timeNow timeIntervalSinceDate:timeSaved];
于 2009-12-19T21:13:13.737 に答える