11

NSDateから取得しようとしてUIDatePickerいますが、末尾が 20 秒の日付時刻が常に返されます。NSDateSwiftで秒を手動でゼロに設定するにはどうすればよいですか?

4

7 に答える 7

36
extension Date {

    var zeroSeconds: Date? {
        let calendar = Calendar.current
        let dateComponents = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: self)
        return calendar.date(from: dateComponents)
    }

}

使用法:

let date1 = Date().zeroSeconds

let date2 = Date()
print(date2.zeroSeconds)
于 2017-07-13T06:05:33.787 に答える
10

Swift のこの回答から:

var date = NSDate();
let timeInterval = floor(date .timeIntervalSinceReferenceDate() / 60.0) * 60.0
date = NSDate(timeIntervalSinceReferenceDate: timeInterval)
于 2015-04-22T06:33:02.210 に答える
7

これはSwift 3で行う方法です。

この例では、日付コンポーネントの秒を削除します。

let date = picker.date
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: date)
let fullMinuteDate = calendar.date(from: components)!

遊び場での作業: 日付から秒の部分を削除する

于 2016-12-05T12:19:27.090 に答える
6

日付を完全な分に切り捨てるには、

let date = NSDate()

let cal = NSCalendar.currentCalendar()
var fullMinute : NSDate?
cal.rangeOfUnit(.CalendarUnitMinute, startDate: &fullMinute, interval: nil, forDate: date)
println(fullMinute!)

Swift 4以降の更新:

let date = Date()
let cal = Calendar.current
if let fullMinute = cal.dateInterval(of: .minute, for: date)?.start {
    print(fullMinute)
}

この方法は、完全な時間、日、月などに切り捨てるために簡単に適用できます。

于 2015-04-22T07:29:24.543 に答える