亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在(月/天/小時/分鐘/秒)內得到兩個NSDate之間的差額

在(月/天/小時/分鐘/秒)內得到兩個NSDate之間的差額

三國紛爭 2019-06-23 16:32:15
在(月/天/小時/分鐘/秒)內得到兩個NSDate之間的差額我正試圖找出當前日期之間的差異,因為NSDate()和PHP的日期time();例如:NSDate(timeIntervalSinceReferenceDate: 1417147270)..我怎樣才能得到這兩個日期之間的時間差呢?我想要一個比較這兩個日期的函數if(seconds > 60)然后再回來幾分鐘,if(minutes > 60)返回時間和if(hours > 24)返回的日子,以此類推。我該怎么做?編輯:當前接受的答案完全符合我想做的事情。為了便于使用,我推薦它來獲取PHP表單中的兩個日期之間的時間。time()函數使用。如果您對PHP并不特別熟悉,那么從1970年1月1日起,這是幾秒鐘內的時間。這對PHP的后端是有益的。如果您正在使用像NodeJS這樣的后端,您可能需要考慮下面的一些其他選項。
查看完整描述

3 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊


Xcode 8.3·Swift 3.1或更高版本


您可以使用“日歷”來幫助您創建一個擴展來執行日期計算,如下所示:


extension Date {

    /// Returns the amount of years from another date

    func years(from date: Date) -> Int {

        return Calendar.current.dateComponents([.year], from: date, to: self).year ?? 0

    }

    /// Returns the amount of months from another date

    func months(from date: Date) -> Int {

        return Calendar.current.dateComponents([.month], from: date, to: self).month ?? 0

    }

    /// Returns the amount of weeks from another date

    func weeks(from date: Date) -> Int {

        return Calendar.current.dateComponents([.weekOfMonth], from: date, to: self).weekOfMonth ?? 0

    }

    /// Returns the amount of days from another date

    func days(from date: Date) -> Int {

        return Calendar.current.dateComponents([.day], from: date, to: self).day ?? 0

    }

    /// Returns the amount of hours from another date

    func hours(from date: Date) -> Int {

        return Calendar.current.dateComponents([.hour], from: date, to: self).hour ?? 0

    }

    /// Returns the amount of minutes from another date

    func minutes(from date: Date) -> Int {

        return Calendar.current.dateComponents([.minute], from: date, to: self).minute ?? 0

    }

    /// Returns the amount of seconds from another date

    func seconds(from date: Date) -> Int {

        return Calendar.current.dateComponents([.second], from: date, to: self).second ?? 0

    }

    /// Returns the a custom time interval description from another date

    func offset(from date: Date) -> String {

        if years(from: date)   > 0 { return "\(years(from: date))y"   }

        if months(from: date)  > 0 { return "\(months(from: date))M"  }

        if weeks(from: date)   > 0 { return "\(weeks(from: date))w"   }

        if days(from: date)    > 0 { return "\(days(from: date))d"    }

        if hours(from: date)   > 0 { return "\(hours(from: date))h"   }

        if minutes(from: date) > 0 { return "\(minutes(from: date))m" }

        if seconds(from: date) > 0 { return "\(seconds(from: date))s" }

        return ""

    }

}

使用日期組件格式化程序


let dateComponentsFormatter = DateComponentsFormatter()

dateComponentsFormatter.allowedUnits = [.year,.month,.weekOfMonth,.day,.hour,.minute,.second]

dateComponentsFormatter.maximumUnitCount = 1

dateComponentsFormatter.unitsStyle = .full

dateComponentsFormatter.string(from: Date(), to: Date(timeIntervalSinceNow: 4000000))  // "1 month"

let date1 = DateComponents(calendar: .current, year: 2014, month: 11, day: 28, hour: 5, minute: 9).date!

let date2 = DateComponents(calendar: .current, year: 2015, month: 8, day: 28, hour: 5, minute: 9).date!


let years = date2.years(from: date1)     // 0

let months = date2.months(from: date1)   // 9

let weeks = date2.weeks(from: date1)     // 39

let days = date2.days(from: date1)       // 273

let hours = date2.hours(from: date1)     // 6,553

let minutes = date2.minutes(from: date1) // 393,180

let seconds = date2.seconds(from: date1) // 23,590,800


let timeOffset = date2.offset(from: date1) // "9M"


let date3 = DateComponents(calendar: .current, year: 2014, month: 11, day: 28, hour: 5, minute: 9).date!

let date4 = DateComponents(calendar: .current, year: 2015, month: 11, day: 28, hour: 5, minute: 9).date!


let timeOffset2 = date4.offset(from: date3) // "1y"


let date5 = DateComponents(calendar: .current, year: 2017, month: 4, day: 28).date!

let now = Date()

let timeOffset3 = now.offset(from: date5) // "1w"


查看完整回答
反對 回復 2019-06-23
  • 3 回答
  • 0 關注
  • 641 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號