আমি কীভাবে 1 জানুয়ারী 2010 এবং (উদাহরণস্বরূপ) 3 ফেব্রুয়ারী 2010 এর মধ্যে দিনগুলি গণনা করতে পারি?
আমি কীভাবে 1 জানুয়ারী 2010 এবং (উদাহরণস্বরূপ) 3 ফেব্রুয়ারী 2010 এর মধ্যে দিনগুলি গণনা করতে পারি?
উত্তর:
NSDate *date1 = [NSDate dateWithString:@"2010-01-01 00:00:00 +0000"];
NSDate *date2 = [NSDate dateWithString:@"2010-02-03 00:00:00 +0000"];
NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1];
int numberOfDays = secondsBetween / 86400;
NSLog(@"There are %d days in between the two dates.", numberOfDays);
মনে রাখবেন, NSDate
অবজেক্টগুলি সময়ের সঠিক মুহুর্তগুলিকে প্রতিনিধিত্ব করে, তাদের কোনও সময়-অঞ্চলের সম্পর্কিত কোনও তথ্য নেই। আপনি যখন উদাহরণস্বরূপ স্ট্রিংকে একটি তারিখে রূপান্তর করেন NSDateFormatter
, NSDateFormatter
তখন কনফিগার করা টাইমজোন থেকে সময় রূপান্তর করে। অতএব, দুটি NSDate
অবজেক্টের মধ্যে সেকেন্ডের সংখ্যা সর্বদা সময়-অঞ্চল-অজ্ঞায়িত হবে।
তদ্ব্যতীত, এই ডকুমেন্টেশনটি নির্দিষ্ট করে যে কোকো প্রয়োগের সময়টি লিপ সেকেন্ডের জন্য অ্যাকাউন্টে আসে না, সুতরাং আপনার যদি এই জাতীয় নির্ভুলতার প্রয়োজন হয় তবে আপনার নিজের প্রয়োগটি রোল করতে হবে।
cocoa
এবং cocoa-touch
তাই এই উত্তর শুধুমাত্র ম্যাক OS X এর জন্য প্রযোজ্য
আপনি এই জাতীয় কিছু ব্যবহার করতে পারেন:
NSDateComponents *components;
NSInteger days;
components = [[NSCalendar currentCalendar] components: NSDayCalendarUnit
fromDate: startDate toDate: endDate options: 0];
days = [components day];
আমি বিশ্বাস করি যে পদ্ধতিটি দিবালোকের সঞ্চয়ের পরিবর্তনের তারিখগুলির মতো পরিস্থিতিতে পড়ে।
NSDate
বস্তুগুলি ইতিমধ্যে টাইম-জোন অজোনস্টিক। উদাহরণস্বরূপ তারিখগুলি বিশ্লেষণের সময় সময়-অঞ্চল তথ্য সরিয়ে ফেলা হয় NSDateFormatter
, যাতে NSDate
বস্তুগুলি যথাসময়ে সঠিক মুহুর্তগুলিকে উপস্থাপন করে। অতএব, আপনার যদি ইতিমধ্যে থাকে startDate
এবং endDate
, এই দুটি অবজেক্ট এক্স সেকেন্ডের পৃথক হবে। টাইম-জোনগুলির সাথে এর কোনও সম্পর্ক নেই।
NSTimeInterval diff = [date2 timeIntervalSinceDate:date1]; // in seconds
কোথায় date1
এবং date2
হয় NSDate
।
এছাড়াও, এর সংজ্ঞাটি নোট করুন NSTimeInterval
:
typedef double NSTimeInterval;
এটি দেখুন। এটি দিবালোক সংরক্ষণের যত্ন নেয়, লিপ ইয়ার হিসাবে এটি গণনা করতে আইওএস ক্যালেন্ডার ব্যবহার করে You
+(NSString*)remaningTime:(NSDate*)startDate endDate:(NSDate*)endDate
{
NSDateComponents *components;
NSInteger days;
NSInteger hour;
NSInteger minutes;
NSString *durationString;
components = [[NSCalendar currentCalendar] components: NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute fromDate: startDate toDate: endDate options: 0];
days = [components day];
hour = [components hour];
minutes = [components minute];
if(days>0)
{
if(days>1)
durationString=[NSString stringWithFormat:@"%d days",days];
else
durationString=[NSString stringWithFormat:@"%d day",days];
return durationString;
}
if(hour>0)
{
if(hour>1)
durationString=[NSString stringWithFormat:@"%d hours",hour];
else
durationString=[NSString stringWithFormat:@"%d hour",hour];
return durationString;
}
if(minutes>0)
{
if(minutes>1)
durationString = [NSString stringWithFormat:@"%d minutes",minutes];
else
durationString = [NSString stringWithFormat:@"%d minute",minutes];
return durationString;
}
return @"";
}
আপনার প্রয়োজন অনুসারে সুইফ্ট 5 এবং আইওএস 12 এর সাহায্যে, আপনি দিনের মধ্যে দুটি তারিখের মধ্যে পার্থক্য খুঁজে পেতে নিম্নলিখিত দুটি উপায়ের একটি ব্যবহার করতে পারেন।
Calendar
এরdateComponents(_:from:to:)
পদ্ধতিimport Foundation
let calendar = Calendar.current
let startDate = calendar.date(from: DateComponents(year: 2010, month: 11, day: 22))!
let endDate = calendar.date(from: DateComponents(year: 2015, month: 5, day: 1))!
let dateComponents = calendar.dateComponents([Calendar.Component.day], from: startDate, to: endDate)
print(dateComponents) // prints: day: 1621 isLeapMonth: false
print(String(describing: dateComponents.day)) // prints: Optional(1621)
DateComponentsFormatter
এর string(from:to:)
পদ্ধতি ব্যবহার করেimport Foundation
let calendar = Calendar.current
let startDate = calendar.date(from: DateComponents(year: 2010, month: 11, day: 22))!
let endDate = calendar.date(from: DateComponents(year: 2015, month: 5, day: 1))!
let formatter = DateComponentsFormatter()
formatter.unitsStyle = .full
formatter.allowedUnits = [NSCalendar.Unit.day]
let elapsedTime = formatter.string(from: startDate, to: endDate)
print(String(describing: elapsedTime)) // prints: Optional("1,621 days")
সুইফট 4
এটি ব্যবহার করে দেখুন (স্ট্রিং সহ তারিখের সীমা):
// Start & End date string
let startingAt = "01/01/2018"
let endingAt = "08/03/2018"
// Sample date formatter
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy"
// start and end date object from string dates
var startDate = dateFormatter.date(from: startingAt) ?? Date()
let endDate = dateFormatter.date(from: endingAt) ?? Date()
// Actual operational logic
var dateRange: [String] = []
while startDate <= endDate {
let stringDate = dateFormatter.string(from: startDate)
startDate = Calendar.current.date(byAdding: .day, value: 1, to: startDate) ?? Date()
dateRange.append(stringDate)
}
print("Resulting Array - \(dateRange)")
সুইফট 3
var date1 = Date(string: "2010-01-01 00:00:00 +0000")
var date2 = Date(string: "2010-02-03 00:00:00 +0000")
var secondsBetween: TimeInterval = date2.timeIntervalSince(date1)
var numberOfDays: Int = secondsBetween / 86400
print(numberOfDays)
আপনি সেকেন্ডে তারিখ রূপান্তর করে পার্থক্যটি সন্ধান করতে পারেন এবং এর জন্য 1970 সাল থেকে সময় ব্যবধান নিতে পারেন এবং তারপরে আপনি দুটি তারিখের মধ্যে পার্থক্য খুঁজে পেতে পারেন।
পার্থক্যটি সন্ধান করার জন্য আপনাকে বর্তমানের তারিখ এবং ভবিষ্যতের তারিখটি পাওয়া দরকার। নিম্নলিখিত ক্ষেত্রে, আমি ভবিষ্যতের তারিখের উদাহরণের জন্য 2 দিন ব্যবহার করেছি। দ্বারা গণনা:
2 days
* 24 hours
* 60 minutes
* 60 seconds
। আমরা আশা করি 2 দিনের মধ্যে সেকেন্ডের সংখ্যা 172,800 হবে।
// Set the current and future date
let now = Date()
let nowPlus2Days = Date(timeInterval: 2*24*60*60, since: now)
// Get the number of seconds between these two dates
let secondsInterval = DateInterval(start: now, end: nowPlus2Days).duration
print(secondsInterval) // 172800.0