[Swift] Date の distance は符号付き距離(時間)を返す

     

TAGS:

Date の distance メソッドについてのメモ

環境&対象

以下の環境で動作確認を行なっています。

  • macOS Monterey 12.4
  • Xcode 13.3.1
  • iOS 15.4

Date

Date は、日付・時間を表す型です。

さまざまな機能がありますが、この記事では、2つの Date 間の距離を計算する distance(to:) をみてみます。

distance メソッド

distance(to:) メソッドは、2つの時間の距離(時間差)を計算する関数です。

Apple のドキュメントは、こちら

上記のドキュメントには、"Returns the distance from this date to another date, specified as a time interval." とあったので、常に正の値が返ってくると勘違いしていたのですが、返ってくる距離は、符号付き距離でした。


let distance = date1.distance(to: date2)

上記のコードでは、date1 の方が date2 より古い日時であれば、distance は正の数になりますが、
date1 の方が新しい日時であれば、distance は負の数になります。

以下のコードで確認できます。(Swift Playground で動作します)


import Foundation

let now = Date()
let oneMinLater = now.advanced(by: 60)

print(now.distance(to: oneMinLater)) // print-out  60.0
print(oneMinLater.distance(to: now)) // print-out  -60.0

まとめ

Date の distance メソッドについて改めて説明してみました。

Date の distance メソッド
  • 2つの日時の距離(時間差)を計算するメソッド
  • 引数に与えた日時が より新しい日時であれば 正の数が返る
  • 引数に与えた日時が 過去の日時であれば 負の数が返る

説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。

コメントを残す

メールアドレスが公開されることはありません。