দুটি এনএসডিটগুলির মধ্যে সুইফট দিন


110

আমি ভাবছি যে সুইফটে দুটি "এনএসডিট" / "নতুন" কোকোয়ের মধ্যে দিনের পরিমাণ পাওয়ার কিছু নতুন এবং দুর্দান্ত সম্ভাবনা আছে কিনা?

যেমন রুবির মতো আমিও করতাম:

(end_date - start_date).to_i

5
আমি মনে করি আপনাকে এখনও এনএসক্যালেন্ডার এবং এনএসডিটকম্পোন্টস ব্যবহার করতে হবে (যার জন্য এসওতে কয়েকশ উত্তর থাকতে হবে)। - আপনি যদি কিছু "নতুন এবং দুর্দান্ত সম্ভাবনা" খুঁজছেন তবে তুলনার জন্য আপনার বর্তমান সমাধানটি দেখানো সহায়ক হবে।
মার্টিন আর

1
এটি এখন খুব সহজ, এবং আপনাকে "এনএস" কিছু ব্যবহার করতে হবে না। আমি কপিরাইট এবং পেস্ট করার জন্য, 2017 এর জন্য একটি উত্তর লিখেছি।
ফ্যাটি

উত্তর:


246

আপনাকে সময়ের পার্থক্যটিও বিবেচনা করতে হবে। উদাহরণস্বরূপ যদি আপনি তারিখগুলি 2015-01-01 10:00এবং তুলনা করেন2015-01-02 09:00 সেই তারিখগুলির মধ্যে দিনগুলি 0 (শূন্য) হিসাবে ফিরে আসবে কারণ সেই তারিখগুলির মধ্যে পার্থক্য 24 ঘন্টাের চেয়ে কম (এটি 23 ঘন্টা)।

আপনার উদ্দেশ্য যদি দুটি তারিখের মধ্যে সঠিক দিনের নম্বর পাওয়া যায় তবে আপনি এই সমস্যাটি নিয়ে এইভাবে কাজ করতে পারেন:

// Assuming that firstDate and secondDate are defined
// ...

let calendar = NSCalendar.currentCalendar()

// Replace the hour (time) of both dates with 00:00
let date1 = calendar.startOfDayForDate(firstDate)
let date2 = calendar.startOfDayForDate(secondDate)

let flags = NSCalendarUnit.Day
let components = calendar.components(flags, fromDate: date1, toDate: date2, options: [])

components.day  // This will return the number of day(s) between dates

সুইফট 3 এবং সুইফট 4 সংস্করণ

let calendar = Calendar.current

// Replace the hour (time) of both dates with 00:00
let date1 = calendar.startOfDay(for: firstDate)
let date2 = calendar.startOfDay(for: secondDate)

let components = calendar.dateComponents([.day], from: date1, to: date2)

14
আপনি স্টার্টঅফডেফোরডেটের পরিবর্তে রাত ১২ টা (দুপুর) যাচাই করতে চাইতে পারেন - টাইমজোন এবং ডিএসটি সামঞ্জস্য করার কারণে কম হওয়ার সম্ভাবনা কম।
ব্র্যান্ডস্ক্রিপ্ট

11
: দুপুর করার জন্য তারিখ নির্ধারণ ভালো কাজ করা যেতে পারেcalendar.date(bySettingHour: 12, minute: 00, second: 00, of: calendar.startOfDay(for: firstDate))
MonsieurDart

দুপুর সেট করার জন্য অপেক্ষাকৃত ছোট সংস্করণ ( startOfDay()অপ্রয়োজনীয় মনে করা হয়): calendar.date(bySettingHour: 12, minute: 0, second: 0, of: firstDate)
জামিক্স

52

সুইফট 2 এর জন্য আমার উত্তর এখানে:

func daysBetweenDates(startDate: NSDate, endDate: NSDate) -> Int
{
    let calendar = NSCalendar.currentCalendar()

    let components = calendar.components([.Day], fromDate: startDate, toDate: endDate, options: [])

    return components.day
}

আমি উপরের @vikingosegundo পোস্টের উপাদানগুলির সাথে এটি সফলভাবে ব্যবহার করেছি। এটি দুটি পূর্ণ তারিখের মধ্যে দিনের সঠিক সংখ্যার প্রতিনিধিত্ব করে একটি পূর্ণসংখ্যা দেয়। <থাম্বস আপ>
আমার অ্যাকাউন্ট মুছুন

আমি এটি পছন্দ করি তবে ফাংশনটির নামটি "দিনভিত্তিক তারিখগুলি" হওয়া উচিত
mbonness

4
এটি 0 টি প্রত্যাবর্তন করে যদি আমরা তুলনা করি todayএবংtomorrow
তাওহীদ

39

আমি একটি দম্পতি সুইফট 3 উত্তর দেখতে পাচ্ছি তাই আমি নিজের নিজস্ব যুক্ত করব:

public static func daysBetween(start: Date, end: Date) -> Int {
   Calendar.current.dateComponents([.day], from: start, to: end).day!
}

নামকরণটি আরও সুইফ্টি অনুভব করে, এটি এক লাইন এবং সর্বশেষ dateComponents()পদ্ধতিটি ব্যবহার করে ।


28

আমি আমার উদ্দেশ্য-সি উত্তরটি অনুবাদ করেছি

let start = "2010-09-01"
let end = "2010-09-05"

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"

let startDate:NSDate = dateFormatter.dateFromString(start)
let endDate:NSDate = dateFormatter.dateFromString(end)

let cal = NSCalendar.currentCalendar()


let unit:NSCalendarUnit = .Day

let components = cal.components(unit, fromDate: startDate, toDate: endDate, options: nil)


println(components)

ফলাফল

<NSDateComponents: 0x10280a8a0>
     Day: 4

সবচেয়ে শক্ত অংশটি ছিল স্বতঃপূরণ তারিখ এবং টু ডেট হতে জোর দেয় NSDate?তবে প্রকৃতপক্ষে সেগুলি অবশ্যই NSDate!রেফারেন্সে প্রদর্শিত হবে ।

অপারেটরের সাথে একটি ভাল সমাধান কেমন হবে তা আমি দেখতে পাচ্ছি না, কারণ আপনি প্রতিটি ক্ষেত্রে ইউনিটকে আলাদাভাবে নির্দিষ্ট করতে চান। আপনি সময়ের ব্যবধানে ফিরে আসতে পারেন, তবে তার চেয়ে বেশি আপনি অর্জন করতে পারবেন না।


দেখে মনে .DayCalendarUnitহচ্ছে অবচিত হ'ল। আমি বিশ্বাস করি এখন .CalendarUnitDayপরিবর্তে আপনার ব্যবহার করা উচিত ।
টেলর অলরেড

2
বিকল্পগুলি এখন একটি প্রত্যাশিত প্যারামিটার
ডিপার্টামেন্টো বি

2
সুইফট 2 চালানো এটি আমার পক্ষে কাজ করে:let components = cal.components(.Day, fromDate: startDate, toDate: endDate, options: [])
আন্দ্রেজ

@ টেলর অলরেড .Dayএখনই
উইলিয়াম জিপি

28

Dateবছর, মাস, দিন, ঘন্টা, মিনিট, সেকেন্ডের তারিখের মধ্যে পার্থক্য পেতে এখানে খুব সুন্দর,

extension Date {

    func years(sinceDate: Date) -> Int? {
        return Calendar.current.dateComponents([.year], from: sinceDate, to: self).year
    }

    func months(sinceDate: Date) -> Int? {
        return Calendar.current.dateComponents([.month], from: sinceDate, to: self).month
    }

    func days(sinceDate: Date) -> Int? {
        return Calendar.current.dateComponents([.day], from: sinceDate, to: self).day
    }

    func hours(sinceDate: Date) -> Int? {
        return Calendar.current.dateComponents([.hour], from: sinceDate, to: self).hour
    }

    func minutes(sinceDate: Date) -> Int? {
        return Calendar.current.dateComponents([.minute], from: sinceDate, to: self).minute
    }

    func seconds(sinceDate: Date) -> Int? {
        return Calendar.current.dateComponents([.second], from: sinceDate, to: self).second
    }

}

1
datesinceDateফাংশন পরামিতি হতে হবে ।
থাইগার

@ দি টাইগার - এই উত্তরের বৃহত্তম ভুলটি হাইলাইট করার জন্য আপনাকে অনেক ধন্যবাদ .. আমি শীঘ্রই উত্তরটি পরীক্ষামূলকভাবে আপডেট করব এবং আপডেট করব।
ক্রুনাল

1
আমার আনন্দ! আমি এটির জন্য পরীক্ষা করেছি daysএবং এটি দুর্দান্ত কাজ করে।
থাইগার

1
ভাল উত্তর. আমি কেবল পরামর্শ দেব func years(since date: Date) -> Int? { return Calendar.current.dateComponents[.year], from: date, to: self).years }, এবং আপনি এটি কল করতে পারে let y = date1.years(since: date2)। এটি আধুনিক নামকরণের সম্মেলনের সাথে আরও সামঞ্জস্যপূর্ণ হতে পারে।
রব

18

সুইফট 3 আইওএস 10 বিটা 4 এর জন্য আপডেট

func daysBetweenDates(startDate: Date, endDate: Date) -> Int {
    let calendar = Calendar.current
    let components = calendar.dateComponents([Calendar.Component.day], from: startDate, to: endDate)
    return components.day!
}

10

এখানে সুইফ্ট 3 (আইওএস 10 বিটার জন্য পরীক্ষিত) এর উত্তর দেওয়া হয়েছে

func daysBetweenDates(startDate: Date, endDate: Date) -> Int
{
    let calendar = Calendar.current
    let components = calendar.components([.day], from: startDate, to: endDate, options: [])
    return components.day!
}

তাহলে আপনি এটিকে এভাবে কল করতে পারেন

let pickedDate: Date = sender.date
let NumOfDays: Int = daysBetweenDates(startDate: pickedDate, endDate: Date())
    print("Num of Days: \(NumOfDays)")

7

প্রস্তাবটিটির জন্য উপরের এমিন বুওর সরালকে ধন্যবাদ সুইফট startOfDay

extension Date {

    func daysBetween(date: Date) -> Int {
        return Date.daysBetween(start: self, end: date)
    }

    static func daysBetween(start: Date, end: Date) -> Int {
        let calendar = Calendar.current

        // Replace the hour (time) of both dates with 00:00
        let date1 = calendar.startOfDay(for: start)
        let date2 = calendar.startOfDay(for: end)

        let a = calendar.dateComponents([.day], from: date1, to: date2)
        return a.value(for: .day)!
    }
}

ব্যবহার:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let start = dateFormatter.date(from: "2017-01-01")!
let end = dateFormatter.date(from: "2018-01-01")!

let diff = Date.daysBetween(start: start, end: end) // 365

1
অনেকগুলি সমস্যা এড়ানোর জন্য অবশ্যই দুজনকে দুপুরের দিকে সরিয়ে নেওয়া ভাল be
ফ্যাটি

3

দ্রুতগতিতে নির্মিত জিনিসগুলি এখনও খুব প্রাথমিক। যেহেতু তাদের এই প্রাথমিক পর্যায়ে হওয়া উচিত। তবে আপনি ওভারলোডিং অপারেটর এবং গ্লোবাল ডোমেন ফাংশনগুলির সাথে ঝুঁকি নিয়ে নিজের স্টাফ যুক্ত করতে পারেন। যদিও তারা আপনার মডিউলে স্থানীয় হবে।

let now = NSDate()
let seventies = NSDate(timeIntervalSince1970: 0)

// Standard solution still works
let days = NSCalendar.currentCalendar().components(.CalendarUnitDay, 
           fromDate: seventies, toDate: now, options: nil).day

// Flashy swift... maybe...
func -(lhs:NSDate, rhs:NSDate) -> DateRange {
    return DateRange(startDate: rhs, endDate: lhs)
}

class DateRange {
    let startDate:NSDate
    let endDate:NSDate
    var calendar = NSCalendar.currentCalendar()
    var days: Int {
        return calendar.components(.CalendarUnitDay, 
               fromDate: startDate, toDate: endDate, options: nil).day
    }
    var months: Int {
        return calendar.components(.CalendarUnitMonth, 
               fromDate: startDate, toDate: endDate, options: nil).month
    }
    init(startDate:NSDate, endDate:NSDate) {
        self.startDate = startDate
        self.endDate = endDate
    }
}

// Now you can do this...
(now - seventies).months
(now - seventies).days

19
একটি দিনের দৈর্ঘ্যের জন্য (24 * 60 * 60) ব্যবহার করবেন না । এটি দিবালোক সংরক্ষণের সময় অ্যাকাউন্টে রূপান্তর গ্রহণ করে না।
মার্টিন আর

আমি মনে করি NSDate এর জন্য সামঞ্জস্য করবে কারণ এটি সর্বদা GMT ব্যবহার করে এবং দিবালোক সংরক্ষণ কেবল তার উপর কেবল একটি বিন্যাস বা স্থানীয়করণ। অবশ্যই এটি মাস, বছর বা সত্যই পরিবর্তনশীল দৈর্ঘ্যের কোনও কিছুর জন্য জটিল হয়ে ওঠে।
ড্যানিয়েল শ্লাগ

1
@ মার্টিনআর আমাকে এটি বিশ্বাস করার চেষ্টা করতে হয়েছিল তবে সত্যিকার অর্থে আমি এখন দেখেছি যে উইকিপিডিয়া এটির উল্লেখ করেছে। আপনি সঠিক. আমার সাথে অনড় থাকার জন্য ধন্যবাদ।
ড্যানিয়েল শ্লাগ

1
সেখানে সঠিক হতে সম্পাদিত। কিন্তু ঝলকানি ধরণের দূরে চলে গেল।
ড্যানিয়েল শ্লাগ

1
এটি অবস্থান, সময় এবং ক্যালেন্ডার সিস্টেম দ্বারা সংজ্ঞায়িত করা হয়। হিব্রু ক্যালেন্ডারে একটি লিপ মাস রয়েছে। একটি দুর্দান্ত ডাব্লুডব্লিউডিসি ভিডিও রয়েছে: ক্যালেন্ডার গণনা সম্পাদন করে - প্রতিটি কোকো কোডারের জন্য অবশ্যই দেখতে হবে।
ভাইকিংগুন্ডো

3

সুইফট 3 এর জন্য আমার উত্তর এখানে:

func daysBetweenDates(startDate: NSDate, endDate: NSDate, inTimeZone timeZone: TimeZone? = nil) -> Int {
    var calendar = Calendar.current
    if let timeZone = timeZone {
        calendar.timeZone = timeZone
    }
    let dateComponents = calendar.dateComponents([.day], from: startDate.startOfDay, to: endDate.startOfDay)
    return dateComponents.day!
}

2

এখনও কোনও সুইফট-নির্দিষ্ট স্ট্যান্ডার্ড লাইব্রেরি খুব কমই পাওয়া যায়; কেবল চর্বিহীন মৌলিক সংখ্যা, স্ট্রিং এবং সংগ্রহের ধরণগুলি।

এক্সটেনশনগুলি ব্যবহার করে এ জাতীয় সংক্ষিপ্তসারগুলি সংজ্ঞায়িত করা পুরোপুরি সম্ভব, তবে বাকী আসল অফ-দ্য বক্সের API যেমন চলে, সেখানে কোনও "নতুন" কোকো নেই; স্যুইফ্ট কেবল পুরানো ভার্বোজ কোকো এপিআই-এ সরাসরি ম্যাপ করে যা ইতোমধ্যে রয়েছে।


2

এই থ্রেডটি এক বছরের পুরানো হলেও আমি আমার সংস্করণটি যুক্ত করতে যাচ্ছি। আমার কোডটি এর মতো দেখাচ্ছে:

    var name = txtName.stringValue // Get the users name

    // Get the date components from the window controls
    var dateComponents = NSDateComponents()
    dateComponents.day = txtDOBDay.integerValue
    dateComponents.month = txtDOBMonth.integerValue
    dateComponents.year = txtDOBYear.integerValue

    // Make a Gregorian calendar
    let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)

    // Get the two dates we need
    var birthdate = calendar?.dateFromComponents(dateComponents)
    let currentDate = NSDate()

    var durationDateComponents = calendar?.components(NSCalendarUnit.CalendarUnitDay, fromDate: birthdate!, toDate: currentDate, options: nil)

    let numberOfDaysAlive = durationDateComponents?.day

    println("\(numberOfDaysAlive!)")

    txtGreeting.stringValue = "Hello \(name), You have been alive for \(numberOfDaysAlive!) days."

আমি আশা করি এটি কাউকে সাহায্য করবে

চিয়ার্স,


2

ইরিনের পদ্ধতিটি সুইফ্ট 3 এ আপডেট হয়েছে, এটি আজ থেকে দিনগুলি দেখায় (দিনের সময় উপেক্ষা করে)

func daysBetweenDates( endDate: Date) -> Int 
    let calendar: Calendar = Calendar.current 
    let date1 = calendar.startOfDay(for: Date()) 
    let date2 = calendar.startOfDay(for: secondDate) 
    return calendar.dateComponents([.day], from: date1, to: date2).day! 
}

2

এটি কিছু Dateএবং আজকের মধ্যে দিনের মধ্যে পরম পার্থক্য প্রদান করে:

extension Date {
  func daysFromToday() -> Int {
    return abs(Calendar.current.dateComponents([.day], from: self, to: Date()).day!)
  }
}

এবং তারপরে এটি ব্যবহার করুন:

if someDate.daysFromToday() >= 7 {
  // at least a week from today
}

2

আপনি নিম্নলিখিত এক্সটেনশন ব্যবহার করতে পারেন:

public extension Date {
    func daysTo(_ date: Date) -> Int? {
        let calendar = Calendar.current

        // Replace the hour (time) of both dates with 00:00
        let date1 = calendar.startOfDay(for: self)
        let date2 = calendar.startOfDay(for: date)

        let components = calendar.dateComponents([.day], from: date1, to: date2)
        return components.day  // This will return the number of day(s) between dates
    }
}

তারপরে, আপনি এটিকে এভাবে কল করতে পারেন:

startDate.daysTo(endDate)

1

সুইফট ৩.২

extension DateComponentsFormatter {
    func difference(from fromDate: Date, to toDate: Date) -> String? {
        self.allowedUnits = [.year,.month,.weekOfMonth,.day]
        self.maximumUnitCount = 1
        self.unitsStyle = .full
        return self.string(from: fromDate, to: toDate)
    }
}

1

সব উত্তর ভাল। তবে স্থানীয়করণের জন্য আমাদের দুটি তারিখের মধ্যে দশমিক দিনের সংখ্যা গণনা করতে হবে। সুতরাং আমরা টেকসই দশমিক বিন্যাস সরবরাহ করতে পারি।

// This method returns the fractional number of days between to dates
func getFractionalDaysBetweenDates(date1: Date, date2: Date) -> Double {

    let components = Calendar.current.dateComponents([.day, .hour], from: date1, to: date2)

    var decimalDays = Double(components.day!)
    decimalDays += Double(components.hour!) / 24.0

    return decimalDays
}

1
extension Date {
    func daysFromToday() -> Int {
        return Calendar.current.dateComponents([.day], from: self, to: Date()).day!
    }
}

তারপরে এটি ব্যবহার করুন

    func dayCount(dateString: String) -> String{
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "MMM dd,yyyy hh:mm a"
        let fetchedDate = dateFormatter.date(from: dateString)


        let day = fetchedDate?.daysFromToday()
        if day! > -1{
            return "\(day!) days passed."
        }else{
        return "\(day! * -1) days left."
        }
    }

0

সুইফট 3 - আজ থেকে আজ অবধি দিন

func daysUntilDate(endDateComponents: DateComponents) -> Int
    {
        let cal = Calendar.current
        var components = cal.dateComponents([.era, .year, .month, .day], from: NSDate() as Date)
        let today = cal.date(from: components)
        let otherDate = cal.date(from: endDateComponents)

        components = cal.dateComponents([Calendar.Component.day], from: (today! as Date), to: otherDate!)
        return components.day!
    }

কল ফাংশন এটি

// Days from today until date
   var examnDate = DateComponents()
   examnDate.year = 2016
   examnDate.month = 12
   examnDate.day = 15
   let daysCount = daysUntilDate(endDateComponents: examnDate)

0

সহজ বিকল্পটি হবে তারিখে একটি এক্সটেনশন তৈরি করা

public extension Date {

        public var currentCalendar: Calendar {
            return Calendar.autoupdatingCurrent
        }

        public func daysBetween(_ date: Date) -> Int {
            let components = currentCalendar.dateComponents([.day], from: self, to: date)
            return components.day!
        }
    }

0
  func completeOffset(from date:Date) -> String? {

    let formatter = DateComponentsFormatter()
    formatter.unitsStyle = .brief

    return  formatter.string(from: Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second], from: date, to: self))




}

যদি আপনার স্ট্রিং হিসাবে বছরের মাসের দিন এবং ঘন্টা প্রয়োজন হয়

var আগামীকাল = ক্যালেন্ডার.কালিয়র.ডেট (লিখে অ্যাডিং: .দিন, মান: 1, থেকে: তারিখ ())!

চলুন ডিসি = কাল ডটকম অফফিট (থেকে: তারিখ ())



0

সুইফট 4

 func getDateHeader(indexPath: Int) -> String {
    let formatter2 = DateFormatter()
    formatter2.dateFormat = "MM-dd-yyyy"
    var dateDeadline : Date?

    dateDeadline = formatter2.date(from: arrCompletedDate[indexPath] as! String)

    let currentTime = dateDeadline?.unixTimestamp
    let calendar = NSCalendar.current

    let date = NSDate(timeIntervalSince1970: Double(currentTime!))
    if calendar.isDateInYesterday(date as Date) { return "Yesterday" }
    else if calendar.isDateInToday(date as Date) { return "Today" }
    else if calendar.isDateInTomorrow(date as Date) { return "Tomorrow" }
    else {
        let startOfNow = calendar.startOfDay(for: NSDate() as Date)
        let startOfTimeStamp = calendar.startOfDay(for: date as Date)
        let components = calendar.dateComponents([.day], from: startOfNow, to: startOfTimeStamp)
        let day = components.day!
        if day < 1 { return "\(abs(day)) days ago" }
        else { return "In \(day) days" }
    }
}

0

এটি সুইফট 5 এর জন্য এমিনের উত্তরের একটি আপডেট সংস্করণ যা দিনের তুলনার জন্য নির্ধারিত সময় হিসাবে মধ্যরাতের পরিবর্তে দুপুর ব্যবহার করার পরামর্শকে অন্তর্ভুক্ত করে। এটি একটি alচ্ছিক ফিরিয়ে দিয়ে বিভিন্ন তারিখের ক্রিয়াকলাপগুলির সম্ভাব্য ব্যর্থতাও পরিচালনা করে।

    ///
    /// This is an approximation; it does not account for time differences. It will set the time to 1200 (noon) and provide the absolute number
    /// of days between now and the given date. If the result is negative, it should be read as "days ago" instead of "days from today."
    /// Returns nil if something goes wrong initializing or adjusting dates.
    ///

    func daysFromToday() -> Int?
    {
        let calendar = NSCalendar.current

        // Replace the hour (time) of both dates with noon. (Noon is less likely to be affected by DST changes, timezones, etc. than midnight.)
        guard let date1 = calendar.date(bySettingHour: 12, minute: 00, second: 00, of: calendar.startOfDay(for: Date())),
              let date2 = calendar.date(bySettingHour: 12, minute: 00, second: 00, of: calendar.startOfDay(for: self)) else
        {
            return nil
        }

        return calendar.dateComponents([.day], from: date1, to: date2).day
    }

আপনার সুইফট নেটিভ ক্যালেন্ডার ব্যবহার করা উচিত (এনএস বাদ দিন)। রাত 12 টা বাজে সময় নির্ধারণের সময় গার্ডের ব্যবহার অর্থহীন। এটি কখনও ব্যর্থ হবে না।
লিও ডাবাস

দুপুরে ঘন্টা নির্ধারণের আগে স্টার্টঅফডে কল করা এটি অর্থহীন।
লিও ডাবাস

0

সুইফ্ট 5.2.4 সমাধান:

import UIKit

let calendar = Calendar.current

let start = "2010-09-01"
let end = "2010-09-05"

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

let firstDate = dateFormatter.date(from: start)!
let secondDate = dateFormatter.date(from: end)!

// Replace the hour (time) of both dates with 00:00
let date1 = calendar.startOfDay(for: firstDate)
let date2 = calendar.startOfDay(for: secondDate)

let components = calendar.dateComponents([Calendar.Component.day], from: date1, to: date2)

components.day  // This will return the number of day(s) between dates

-1

2017 সংস্করণ, অনুলিপি এবং পেস্ট করুন

func simpleIndex(ofDate: Date) -> Int {
    
    // index here just means today 0, yesterday -1, tomorrow 1 etc.
    
    let c = Calendar.current
    let todayRightNow = Date()
    
    let d = c.date(bySetting: .hour, value: 13, of: ofDate)
    let t = c.date(bySetting: .hour, value: 13, of: todayRightNow)
    
    if d == nil || today == nil {
    
        print("weird problem simpleIndex#ofDate")
        return 0
    }
    
    let r = c.dateComponents([.day], from: today!, to: d!)
    // yesterday is negative one, tomorrow is one
    
    if let o = r.value(for: .day) {
        
        return o
    }
    else {
    
        print("another weird problem simpleIndex#ofDate")
        return 0
    }
}

-2
let calendar = NSCalendar.currentCalendar();
let component1 = calendar.component(.Day, fromDate: fromDate)
let component2 = calendar.component(.Day, fromDate: toDate)
let difference  = component1 - component2

1
তারিখের সংখ্যার মধ্যে পার্থক্য মেটাচ্ছে- 21 শে জানুয়ারী থেকে 22 শে ফেব্রুয়ারী 1 দিন দেবে, 32 দিনের মতো করা উচিত নয়
পিটার জনসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.