簡體   English   中英

比較日期和字符串日期值Swift

[英]Compare Date to String Date Value Swift

我正在嘗試將字符串日期轉換為日期類型。 但是,當我在將兩個日期彼此比較之后嘗試下面給出的此代碼返回nil值時,一個是從日期選擇器中選擇的日期,第二個是當前日期,但始終給出我的返回號。

我真的很困惑如何將字符串日期轉換為日期類型,並且在將兩個日期相互比較之后,請檢查以下代碼:

    let currentDate = Date()
    let currentDformatter = DateFormatter()
    currentDformatter.dateFormat = "dd-MM-yyyy"
    let currentDateResult = currentDformatter.date(from: "\(currentDate)")
    print("Current Latest Date ",currentDateResult as Any)

    let selectedDate = Date()
    let selectedDformatter = DateFormatter()
    selectedDformatter.dateFormat = "dd-MM-yyyy"
    let selectedresult = selectedDformatter.string(from: selectedDate)
    print("Current Latest Date ",selectedresult)

    if currentDateResult == selectedDate{
        print("yes")
    }else{
        print("no")
    }

而且我也在比較時間,請給我一些建議,告訴我如何防止用戶選擇超出特定時間的時間選擇器。 例如,餐廳關閉時間為5點。

碼:

CurrentDateAndTime 2019-04-15 05:00:00 +0000

SelectDateAndTime  2019-04-16 07:52:28 +0000

我不希望用戶選擇5點后的時間,我該如何檢查和比較時間?

我如何檢查和比較時間?

有一種更好的方法來檢查兩個日期是否在同一天

let currentDate = Date()
let selectedDate = Date()
if Calendar.current.isDate(currentDate, inSameDayAs: selectedDate) {
    print("yes")
} else {
    print("no")
}
let currentDate = Date()
let currentDformatter = DateFormatter()
currentDformatter.dateFormat = "dd-MM-yyyy"
let currentDateResult = currentDformatter.date(from: "\(currentDate)")
print("Current Latest Date ",currentDateResult as Any)

在上面的代碼中,您實際上並沒有將Date對象轉換為String類型。 將其插值到字符串只會打印出對象及其屬性。 您必須將日期對象轉換為String。

let myDateInString = "22-08-2018"
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "dd-MM-yyyy"
let date = formatter.date(from: myDateInString) // Optional
let stringVal = formatter.string(from: date!)
debugPrint(stringVal)

如果要比較兩個日期,可以使用:

switch date1.compare(date2) {
case .orderedSame: break // exact same
case .orderedAscending: break // date2 comes after date1 in calendar
case .orderedDescending: break // date2 comes before date1 in calendar
}

如果您只想檢查兩個日期是否同一天,請使用@vadian的答案

您正在獲取currentDateResultnil因為您沒有傳遞正確的date String因此您需要將date轉換為string然后將string傳遞給該string如下所示:

let currentDateResult = currentDformatter.date(from: currentDformatter.string(from: currentDate))

否則,您可以執行與上述@vadian答案相同的操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM