2

過去(過去1時間)にNSDateを作成していますが、これは正しく設定されているように見えます。それを使用して、偶数が発生したかどうかを判断したいだけです。過去に設定したので、チェックを行うと、間違いなく偶数が発生したと見なされるはずですが、timeIntervalSinceDateは肯定的な結果しか得られないようです。

これは私がtimeIntervalSinceDateで使用しているコードです

 NSDate *now = [NSDate date];
  NSTimeInterval secondsSincePlantingInterval = [now timeIntervalSinceDate:plantingDate];

これは68秒を与えていますが、-68秒である必要がありますか、それとも負の値を返しませんか?

4

2 に答える 2

5

これは文書化された完全に正常な動作です

ドキュメントには次のように記載されています。

- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate

戻り値

レシーバーと anotherDate の間の間隔。受信者が anotherDate より前の場合、戻り値は負になります。

は過去なのでplantingDate、受信者はそれより前ではありません。したがって、値は正です。

さらに ; これは平易な英語です

 [now timeIntervalSinceDate:plantingDate];

したがって、plantingDate から現在までの時間間隔は正です。

于 2012-11-12T21:05:07.560 に答える
3

はい、負の値を返します。しかし、それplantingDateが過去のものであるなら、私はsecondsSincePlantingInterval前向きであると期待しています。

考えてみると、その行は次のようになっています。

からの秒数を教えてnowください。 plantingDate

2 日の火曜日が 1 日の月曜日から 1 日であるように、 からnow+ve 秒plantingDateです。

あなたがしたい:

NSTimeInterval secondsSincePlantingInterval = [plantingDate timeIntervalSinceNow];
于 2012-11-12T21:06:22.960 に答える