質問

私は私の人生のためにそれをうまくできないので、最後の本!

私のアプリは、ユーザデフォルトに(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

任意の助けてくれてありがとう!

役に立ちましたか?

解決

問題がいくつかあります。まず、あなたのstringWithFormat:にあなたは%gを、ではない%dを使用したい、%dは整数値のためです。現在の通話はあなたに負の値を与える[timeNow timeIntervalSinceDate:timeSaved]また、あなたが行う必要があります。

他のヒント

ここで私が使用するコードです。

ユーザーはいくつかのデータを同期する際に

私のアプリでは、私はこのコードを使用して、現在の日付/時刻を記録ます:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:[NSDate date] forKey:@"LastSyncDate"];
[prefs synchronize];
私はそれは、彼らが最後に同期されていますので、どのように多くの日を見たい場合は、

そこで、私はこれを使用することができます:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSDate* dateOfLastSync = [prefs objectForKey:@"LastSyncDate"];
if (dateOfLastSync != nil)
{
    NSDate *timeNow = [NSDate date];
    double SECONDS_TO_DAY = 60 * 60 * 24;
    int timeIntervalInDays = (int)([timeNow timeIntervalSinceDate:dateOfLastSync] / SECONDS_TO_DAY);
    NSLog(@"The last sync was %d days ago.", timeIntervalInDays);
}

この情報がお役に立てば幸いです。

マイク

www.MikesKnowledgeBase.comする

私は、あなたは、あなたが後方ごtimeInterval計算を持っていないと思いますか?私はあなたがそれが逆に言いたいと思います。

double timeInterval = [timeNow timeIntervalSinceDate:timeSaved];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top