বর্তমান তারিখ থেকে 7 দিন বিয়োগ করুন


119

দেখে মনে হচ্ছে আমি বর্তমান তারিখ থেকে 7 দিন বিয়োগ করতে পারি না। আমি এটি এইভাবে করছি:

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setDay:-7];
NSDate *sevenDaysAgo = [gregorian dateByAddingComponents:offsetComponents toDate:[NSDate date] options:0];

সেভেনডায়সএগো বর্তমান তারিখের সমান মান পায়।

সাহায্য করুন.

সম্পাদনা: আমার কোডে আমি ভেরিয়েবলটি প্রতিস্থাপন করতে ভুলে গিয়েছিলাম যা সঠিক তারিখের সাথে বর্তমান তারিখটি পায়। সুতরাং উপরের কোডটি কার্যকরী।


3
[NSDate dateWithTimeIntervalSinceReferenceDate:[NSDate date].timeIntervalSinceReferenceDate - (7*24*60*60)]- যদিও এটি ডিএসটি পরিবর্তনগুলি পরিচালনা করে না।
হট লিক্স

এটা কাজ করা উচিত। আপনি 7 বিয়োগের পরিবর্তে 1 যুক্ত করলে এটি কী কাজ করবে? আপনি কীভাবে নির্ধারণ করবেন যে সেভেনডেসআগো আজকে বোঝায়?
জেরেমিপি

উত্তর:


112

তারিখবাইএডিংটাইম অন্তর্বর্তী পদ্ধতি ব্যবহার করুন:

NSDate *now = [NSDate date];
NSDate *sevenDaysAgo = [now dateByAddingTimeInterval:-7*24*60*60];
NSLog(@"7 days ago: %@", sevenDaysAgo);

আউটপুট:

7 days ago: 2012-04-11 11:35:38 +0000

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


45
এমন প্রান্তের কেস রয়েছে যেখানে এটি সঠিকভাবে কাজ করবে না, উদাহরণস্বরূপ যদি সাত দিনের মধ্যে দিবালোকের সঞ্চয় পরিবর্তন হয়।
জেরেমিপি

1
ডায়মভের উত্তর হ'ল এটি করার নিরাপদ উপায়।
w3bshark

2
এই উপরোক্ত কারণে ভুল উত্তর, ব্যবহার dymv এর উত্তর
BarrettJ

1
আসলে এটি সহজভাবে করা যেতে পারে:[now dateByAddingDays:-7]
ক্র্যাশঅভারাইড

এই জাতীয় গণনা করা বিপদজনক, @ ডভের সংস্করণ পছন্দ করুন।
ctietze

196

কোড:

NSDate *currentDate = [NSDate date];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setDay:-7];
NSDate *sevenDaysAgo = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:currentDate options:0];
NSLog(@"\ncurrentDate: %@\nseven days ago: %@", currentDate, sevenDaysAgo);
[dateComponents release];

আউটপুট:

currentDate: 2012-04-22 12:53:45 +0000
seven days ago: 2012-04-15 12:53:45 +0000

এবং আমি জেরেমিপ এর সাথে পুরোপুরি একমত।

বিআর।
ইউজিন


2
যদিও এই উত্তরে একটি স্মৃতি ফুটো আছে।
অতুলজংরা

133

আপনি যদি কমপক্ষে আইওএস 8 বা ওএস এক্স 10.9 চালিয়ে যান তবে আরও পরিষ্কার উপায় আছে:

NSDate *sevenDaysAgo = [[NSCalendar currentCalendar] dateByAddingUnit:NSCalendarUnitDay
                                                                value:-7
                                                               toDate:[NSDate date]
                                                              options:0];

বা, সুইফট 2 সহ:

let sevenDaysAgo = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: -7,
    toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))

এবং সুইফট 3 এবং এর সাথে এটি আরও কমপ্যাক্ট হয়:

let sevenDaysAgo = Calendar.current.date(byAdding: .day, value: -7, to: Date())

3
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি আপনার পক্ষে সমস্ত প্রান্তের কেসগুলি পরিচালনা করে।
ঝিভকো বোগদানভ

@ জিভকোবোগদানভ আমার উত্তর গ্রহণযোগ্য উত্তরের কয়েক বছর পরে এসেছিল এবং আমি বিশ্বাস করি না যে আপনি সত্যের পরে আপনার গৃহীত উত্তরটি পরিবর্তন করতে পারবেন।
ডভ

এটি অন্য যে কোনও কিছুর চেয়ে ভবিষ্যতের রেফারেন্সের জন্য আরও বেশি।
ঝিভকো বোগদানভ

56

সুইফট 3

Calendar.current.date(byAdding: .day, value: -7, to: Date())

3
এনএসক্যালেন্ডার ব্যবহার করবেন না, পরিবর্তে ক্যালেন্ডার ব্যবহার করুন :)
জোনাস

8

সুইফট 4.2 - মিউটেট (আপডেট) স্ব

যদি ইতিমধ্যে তার একটি তারিখের পরিবর্তনশীল থাকে (তবে আপডেট / নিজেই পরিবর্তিত হয়) তবে এক সপ্তাহ আগে মূল পোস্টারটি এখানে পেতে আরও একটি উপায়।

extension Date {
    mutating func changeDays(by days: Int) {
        self = Calendar.current.date(byAdding: .day, value: days, to: self)!
    }
}

ব্যবহার

var myDate = Date()       // Jan 08, 2019
myDate.changeDays(by: 7)  // Jan 15, 2019
myDate.changeDays(by: 7)  // Jan 22, 2019
myDate.changeDays(by: -1) // Jan 21, 2019

অথবা

// Iterate through one week
for i in 1...7 {
    myDate.changeDays(by: i)
    // Do something
}

4

ডিমভের উত্তরটি দুর্দান্ত কাজ করে। এটি আপনি দ্রুত ব্যবহার করতে পারেন

extension NSDate {    
    static func changeDaysBy(days : Int) -> NSDate {
        let currentDate = NSDate()
        let dateComponents = NSDateComponents()
        dateComponents.day = days
        return NSCalendar.currentCalendar().dateByAddingComponents(dateComponents, toDate: currentDate, options: NSCalendarOptions(rawValue: 0))!
    }
}

আপনি এটি দিয়ে কল করতে পারেন

NSDate.changeDaysBy(-7) // Date week earlier
NSDate.changeDaysBy(14) // Date in next two weeks

আশা করি এটি dymv থেকে সহায়তা করবে এবং ধন্যবাদ


4

সুইফট 4.2 আইওএস 11.x বাবেকের সমাধান, খাঁটি সুইফ্ট

extension Date {
  static func changeDaysBy(days : Int) -> Date {
    let currentDate = Date()
    var dateComponents = DateComponents()
    dateComponents.day = days
    return Calendar.current.date(byAdding: dateComponents, to: currentDate)!
  }
}

4

সুইফ্ট অপারেটর এক্সটেনশন:

extension Date {
    
    static func -(lhs: Date, rhs: Int) -> Date {
        return Calendar.current.date(byAdding: .day, value: -rhs, to: lhs)!
    }
}

ব্যবহার

let today = Date()
let yesterday = today - 7

3

আসল স্বীকৃত উত্তরের 3.0+ সংস্করণ

তারিখ () .ডাইমটাইম ইন্টারভেলভ (-7 * 24 * 60 * 60)

তবে এটি কেবল পরম মান ব্যবহার করে। ক্যালেন্ডার উত্তর ব্যবহার বেশিরভাগ ক্ষেত্রে সম্ভবত আরও উপযুক্ত।


-2

সুইফট 3:

ডভের উত্তরে একটি পরিবর্তন।

extension Date {

    func dateBeforeOrAfterFromToday(numberOfDays :Int?) -> Date {

        let resultDate = Calendar.current.date(byAdding: .day, value: numberOfDays!, to: Date())!
        return resultDate
    }
}

ব্যবহার:

let dateBefore =  Date().dateBeforeOrAfterFromToday(numberOfDays : -7)
let dateAfter = Date().dateBeforeOrAfterFromToday(numberOfDays : 7)
print ("dateBefore : \(dateBefore), dateAfter :\(dateAfter)")

1
কেন numberOfDaysঐচ্ছিক এবং তারপর জোর করে মোড়ানো? এটি কি কেবল একটি অ-alচ্ছিক হওয়া উচিত নয় Int?
ডভ

এটি সুইফট ফাংশনে .চ্ছিক মান রাখার সঠিক উপায়।
এজি

1
তবে নাম্বার অফডেস optionচ্ছিক কেন? এমন সময় কি আছে যখন কেউ এই এক্সটেনশন পদ্ধতিটি কল করবে এবং যোগ বা সরানোর জন্য বেশ কয়েকটি দিন দিবে না?
ডোভ

-3

SWIFT 3.0 এর জন্য

এখানে ফুকশন, আপনি দিন, মাস, দিনকে কোনও গণনা দ্বারা হ্রাস করতে পারবেন যেমন উদাহরণস্বরূপ, আমি বর্তমান সিস্টেমের তারিখের বছরকে 100 বছর কমিয়ে দিয়েছি, আপনি এটি দিনের জন্যও করতে পারেন, মাসও কেবল এটি পাল্টা সেট করে এবং এটি সংরক্ষণ করতে পারেন অ্যারে, আপনি এই অ্যারেটি যে কোনও জায়গায় করতে পারেন তবে বর্তমান টাইম ()

 {

    let date = Date()
    let calendar = Calendar.current
    var year = calendar.component(.year, from: date)
    let month = calendar.component(.month, from: date)
    let  day = calendar.component(.day, from: date)
    let pastyear = year - 100
    var someInts = [Int]()
    printLog(msg: "\(day):\(month):\(year)" )

    for _ in pastyear...year        {
        year -= 1
                     print("\(year) ")
        someInts.append(year)
    }
          print(someInts)
        }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.