Rupesh Baldania
Rupesh Baldania

Reputation: 81

issues in comparing Day from Date in swift 4

Comparison is required to check date is past date day.

I have tried with this

let calendar = NSCalendar.current

//Get just MM/dd/yyyy from current date
let components = calendar.dateComponents([], from:  Date())

//Convert to NSDate
let pastDates = self.calendar.selectedDates.filter { $0 <  calendar.date(from: components as DateComponents)! }

Upvotes: 0

Views: 578

Answers (4)

Kamran
Kamran

Reputation: 15238

Update the below line to give you a date object,

let components = calendar.dateComponents([.month, .day, .year], from:  Date())

Currently you are not providing any date component in the array so you will not get a date object.

Upvotes: 2

RSR
RSR

Reputation: 636

This is how you can add hours or days in current date and time -

calendar.date(byAdding: .hour, value: 1, to: currentDate)
calendar.date(byAdding: .day, value: 7, to: currentDate)

And this is how you can compare 2 dates and calculate hours, mins and also days

let calendar = Calendar.current
                    let dateFormatter = DateFormatter()
                    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
                    dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
                    let anyDataTime = dateFormatter.date(from: anotherDateTime)

                    let components = calendar.dateComponents([.minute], from: Date(), to: anyDataTime!)
                    let hour = (Double(components.minute!) / 60.0).rounded()

Upvotes: 0

Abhirajsinh Thakore
Abhirajsinh Thakore

Reputation: 1822

To find the date is smaller or bigger:

You can use this simple Code:

let differenceBetweenTwoDate = Calendar.current.dateComponents([.day], from: previousDate, to: Date())

    if differenceBetweenTwoDate.day! > 0{

        print("date is bigger")
    }else{

        print("date is smaller")
    }

Hope it Helps!

Upvotes: 0

Pincha
Pincha

Reputation: 156

I didn't understood what is your question properly, but hope this helps you:

let beforeDateStr = "04/12/2018"
let todayDate = Date()

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy"

let beforeDateFormatted = dateFormatter.date(from: beforeDateStr)

if Calendar.current.compare(todayDate, to: beforeDateFormatted!, toGranularity: .day) == .orderedDescending {
    print("before date day is lesser than current date")
} else {
    print("before date day is equal or greater than todays date")
}

Upvotes: 0

Related Questions