1. ホーム
  2. ios

時間成分を含まないNSDatesの比較

2023-07-14 03:57:51

質問

swiftのプレイグラウンドで

NSDate.date() 

しかし、これは常にtime要素が付加された状態で表示されます。私のアプリのために、私は時間要素を無視する必要があります。これはSwiftで可能ですか?どのようにそれを行うことができますか?たとえ私がtime要素をすべての日付で同じ時間に設定できたとしても、それはあまりにも動作するでしょう。

また、私は2つの日付を比較しようとしており、現時点では次のコードを使用しています。

var earlierDate:NSDate = firstDate.earlierDate(secondDate)

これしかないのでしょうか、それとも時間要素を無視する方法でできるのでしょうか?例えば、同じ日でも時間が違う場合は結果を出したくありません。

どのように解決するのですか?

これを使う Calendar 関数を使用して、iOS 8.0+ で日付を比較することができます。

func compare(_ date1: Date, to date2: Date, toGranularity component: Calendar.Component) -> ComparisonResult



パッシング .day をユニットとして

この機能を次のように使う。

let now = Date()
// "Sep 23, 2015, 10:26 AM"
let olderDate = Date(timeIntervalSinceNow: -10000)
// "Sep 23, 2015, 7:40 AM"

var order = Calendar.current.compare(now, to: olderDate, toGranularity: .hour)

switch order {
case .orderedDescending:
    print("DESCENDING")
case .orderedAscending:
    print("ASCENDING")
case .orderedSame:
    print("SAME")
}

// Compare to hour: DESCENDING

var order = Calendar.current.compare(now, to: olderDate, toGranularity: .day)


switch order {
case .orderedDescending:
    print("DESCENDING")
case .orderedAscending:
    print("ASCENDING")
case .orderedSame:
    print("SAME")
}

// Compare to day: SAME