2017-07-31 9 views
0

我有一個字符串格式的日期,例如: - 「2017-07-31」或可以是字符串格式的多個日期(任何)。我的要求是檢查這個日期到當前的日期,如果它大於0且小於15,那麼我必須做另一次操作。來自字符串的日期不正確,兩個日期的差異也使用Swift 3?

所以首先我將日期字符串轉換爲日期格式。但它是在一天前提供的日期。這裏是我的代碼:

//Date from string 
func dateFromString(date : String) -> Date { 
    let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd" 
    let currentDate = (dateFormatter.date(from: date))//(from: date)) 
    return currentDate! 
} 

Ex。我的日期是「2017-08-30」,並且此函數以日期格式返回2017-08-29 18:30:00 +0000。這意味着1天前。我對日期操作有點混淆。我也閱讀了很多博客。

之後,我必須檢查此日期到當前日期,如果它在0 < 15之間比我會做其他操作。

比較兩個日期:

如果我的日期是當天的日期和比較明天日期,那麼也它給0天差異。爲什麼?

+0

'2017年8月29日18:30:00 + 0000'是*正確。*日期沒有時區,並且始終以UTC格式打印。它與您當地時區中的「2017-08-30」是*相同的日期*。 –

+0

好的,但與當前日期相比,它很奇怪。它沒有給予適當的區別。謝謝 – kishor0011

+0

請提供帶輸入數據,期望輸出和實際輸出的[mcve]。 –

回答

1

如果 - 例如 - 當前日期是2017- 07-31在11AM然後 與2017-08-01(午夜)的差異是0天和13小時,這就是爲什麼你會得到「0天差異」結果。

你可能需要的是比較天開始當天的 和其他日期之間的區別:

extension Date { 
    func daysBetween(toDate: Date) -> Int { 
     let cal = Calendar.current 
     let startOfToday = cal.startOfDay(for: self) 
     let startOfOtherDay = cal.startOfDay(for: toDate) 
     return cal.dateComponents([.day], from: startOfToday, to: startOfOtherDay).day! 
    } 
} 
+0

感謝解釋。它正在工作,但我想問一個當前日期的事情會比較「2017-07-31」,所以到2017-08-01已經有24小時的差異,但是它給了0天。那麼你使用startOfDay? – kishor0011

0

嘗試轉換爲字符串,此方法日期:

func dateFromString(date : String) -> Date { 
    let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd" 
    dateFormatter.timeZone = TimeZone.init(abbreviation: "UTC") 
    let currentDate = (dateFormatter.date(from: date))//(from: date)) 
    return currentDate! 
} 
0

試試這個在幾秒鐘內兩個日期之間的時間比較:

var seconds = Calendar.current.dateComponents([.second], from: date1!, to: date2!).second ?? 0 

    seconds = abs(seconds) 

    let min = seconds/60  // this gives you the number of minutes between two dates 
    let hours = seconds/3600 // this gives you the number of hours between two dates 
    let days = seconds/3600*24 // this gives you the number of days between two dates 
+0

** NO。** - 一天可以有23,24或25小時。考慮夏令時。 –

+0

是的,這可能是一個問題。謝謝指出,所以我們可以把條件相應地 –

相關問題