মূলত, শিরোনাম হিসাবে। আমি ভাবছি যে আমি কীভাবে 1 দিন যোগ করতে পারি NSDate
।
সুতরাং যদি এটি ছিল:
21st February 2011
এটি হয়ে যাবে:
22nd February 2011
বা যদি এটি ছিল:
31st December 2011
এটি হয়ে যাবে:
1st January 2012.
মূলত, শিরোনাম হিসাবে। আমি ভাবছি যে আমি কীভাবে 1 দিন যোগ করতে পারি NSDate
।
সুতরাং যদি এটি ছিল:
21st February 2011
এটি হয়ে যাবে:
22nd February 2011
বা যদি এটি ছিল:
31st December 2011
এটি হয়ে যাবে:
1st January 2012.
উত্তর:
সুইফ্ট 5.0:
var dayComponent = DateComponents()
dayComponent.day = 1 // For removing one day (yesterday): -1
let theCalendar = Calendar.current
let nextDate = theCalendar.date(byAdding: dayComponent, to: Date())
print("nextDate : \(nextDate)")
উদ্দেশ্য গ :
NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
dayComponent.day = 1;
NSCalendar *theCalendar = [NSCalendar currentCalendar];
NSDate *nextDate = [theCalendar dateByAddingComponents:dayComponent toDate:[NSDate date] options:0];
NSLog(@"nextDate: %@ ...", nextDate);
এটি স্ব-ব্যাখ্যামূলক হওয়া উচিত।
dateByAddingComponents
NSCalendarOptions(rawValue: 0)
আইওএস 8 যেহেতু আপনি ব্যবহার করতে পারেন NSCalendar.dateByAddingUnit
সুইফট 1.x উদাহরণ:
let today = NSDate()
let tomorrow = NSCalendar.currentCalendar()
.dateByAddingUnit(
.CalendarUnitDay,
value: 1,
toDate: today,
options: NSCalendarOptions(0)
)
সুইফট ২.০:
let today = NSDate()
let tomorrow = NSCalendar.currentCalendar()
.dateByAddingUnit(
.Day,
value: 1,
toDate: today,
options: []
)
সুইফট 3.0:
let today = Date()
let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: today)
date.add(.days, 1)
? * গিয়ে একটি এক্সটেনশান তৈরি করে
extension Date { func adding(_ component: Calendar.Component, _ value: Int) -> Date? { return Calendar.current.date(byAdding: component, value: value, to: self) } }
ব্যবহারDate().adding(.day, 1) // "Jun 6, 2019 at 5:35 PM"
সুইফট 5-এর জন্য আপডেট হয়েছে
let today = Date()
let nextDate = Calendar.current.date(byAdding: .day, value: 1, to: today)
উদ্দেশ্য গ
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
// now build a NSDate object for the next day
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setDay:1];
NSDate *nextDate = [gregorian dateByAddingComponents:offsetComponents toDate: [NSDate date] options:0];
আইওএস 8+, ওএসএক্স 10.9+, উদ্দেশ্য-সি
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *tomorrow = [cal dateByAddingUnit:NSCalendarUnitDay
value:1
toDate:[NSDate date]
options:0];
হাইমেনটেনেন্সের উত্তর এবং ভাইকিংগুন্ডোর মন্তব্যের ভিত্তিতে একটি কার্যকারী সুইফ্ট 3+ বাস্তবায়ন । এই তারিখ এক্সটেনশনে বছর, মাস এবং সময় পরিবর্তন করার জন্য অতিরিক্ত বিকল্পও রয়েছে:
extension Date {
/// Returns a Date with the specified amount of components added to the one it is called with
func add(years: Int = 0, months: Int = 0, days: Int = 0, hours: Int = 0, minutes: Int = 0, seconds: Int = 0) -> Date? {
let components = DateComponents(year: years, month: months, day: days, hour: hours, minute: minutes, second: seconds)
return Calendar.current.date(byAdding: components, to: self)
}
/// Returns a Date with the specified amount of components subtracted from the one it is called with
func subtract(years: Int = 0, months: Int = 0, days: Int = 0, hours: Int = 0, minutes: Int = 0, seconds: Int = 0) -> Date? {
return add(years: -years, months: -months, days: -days, hours: -hours, minutes: -minutes, seconds: -seconds)
}
}
ওপির অনুরোধ অনুযায়ী কেবলমাত্র একটি দিন যুক্ত করার জন্য ব্যবহারগুলি হ'ল:
let today = Date() // date is then today for this example
let tomorrow = today.add(days: 1)
let foo = Date().add([.calendar: 1, .yearForWeekOfYear: 3]
আমি আমার উত্তরের বিকল্প সমাধান যোগ করার মতো কিছুটা বোধগম্য করি না যদিও । আপনার পরামর্শের জন্য ধন্যবাদ, @ ভাইকিংগুন্ডো!
সুইফট ৪.০ ( এই চমত্কার উত্তরে সুইফট as.০ এর মতোই এটি আমার মতো দুষ্টুদের জন্য পরিষ্কার করে দিয়েছে)
let today = Date()
let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: today)
নীচের ফাংশনটি ব্যবহার করুন এবং তারিখের দিনগুলি পেতে দিন প্যারামিটার ব্যবহার করুনআপনার / দিনগুলি কেবলমাত্র ভবিষ্যতের তারিখের জন্য ইতিবাচক হিসাবে বা পূর্ববর্তী তারিখের জন্য নেতিবাচক হিসাবে প্যারামিটারটি পাস করুন:
+ (NSDate *) getDate:(NSDate *)fromDate daysAhead:(NSUInteger)days
{
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
dateComponents.day = days;
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *previousDate = [calendar dateByAddingComponents:dateComponents
toDate:fromDate
options:0];
[dateComponents release];
return previousDate;
}
দ্রুত
var dayComponenet = NSDateComponents()
dayComponenet.day = 1
var theCalendar = NSCalendar.currentCalendar()
var nextDate = theCalendar.dateByAddingComponents(dayComponenet, toDate: NSDate(), options: nil)
এটা কাজ!
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit unit = NSCalendarUnitDay;
NSInteger value = 1;
NSDate *today = [NSDate date];
NSDate *tomorrow = [calendar dateByAddingUnit:unit value:value toDate:today options:NSCalendarMatchStrictly];
NSDate *today=[NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents *components=[[NSDateComponents alloc] init];
components.day=1;
NSDate *targetDate =[calendar dateByAddingComponents:components toDate:today options: 0];
সুইফট 4.0
extension Date {
func add(_ unit: Calendar.Component, value: Int) -> Date? {
return Calendar.current.date(byAdding: unit, value: value, to: self)
}
}
ব্যবহার
date.add(.day, 3)! // adds 3 days
date.add(.day, -14)! // subtracts 14 days
দ্রষ্টব্য: আপনি যদি জানেন না কেন কোডের লাইনগুলি একটি উদ্দীপনা পয়েন্ট দিয়ে শেষ হয়, গুগলে "সুইফ্ট বিকল্পগুলি" সন্ধান করুন।
আপনি NSDate এর পদ্ধতিটি ব্যবহার করতে পারেন - (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
যেখানে seconds
হবে60 * 60 * 24 = 86400
সুইফট ২.১.১ এবং এক্সকোড .1.১ ওএসএক্স ১০.১০.৫ এ, আপনি ফাংশনটি ব্যবহার করে যে কোনও দিন এগিয়ে এবং পিছনে যুক্ত করতে পারেন
func addDaystoGivenDate(baseDate:NSDate,NumberOfDaysToAdd:Int)->NSDate
{
let dateComponents = NSDateComponents()
let CurrentCalendar = NSCalendar.currentCalendar()
let CalendarOption = NSCalendarOptions()
dateComponents.day = NumberOfDaysToAdd
let newDate = CurrentCalendar.dateByAddingComponents(dateComponents, toDate: baseDate, options: CalendarOption)
return newDate!
}
বর্তমান তারিখটি 9 দিনের বাড়ানোর জন্য ফাংশন কল
var newDate = addDaystoGivenDate(NSDate(), NumberOfDaysToAdd: 9)
print(newDate)
80 দিনের মধ্যে হ্রাস বর্তমান তারিখের জন্য ফাংশন কল
newDate = addDaystoGivenDate(NSDate(), NumberOfDaysToAdd: -80)
print(newDate)
এখানে একটি সাধারণ উদ্দেশ্য পদ্ধতি যা আপনাকে নির্দিষ্ট তারিখে যেকোন প্রকার ইউনিট (বছর / মাস / দিন / ঘন্টা / দ্বিতীয় ইত্যাদি) যোগ / বিয়োগ করতে দেয়।
সুইফট ২.২ ব্যবহার করে
func addUnitToDate(unitType: NSCalendarUnit, number: Int, date:NSDate) -> NSDate {
return NSCalendar.currentCalendar().dateByAddingUnit(
unitType,
value: number,
toDate: date,
options: NSCalendarOptions(rawValue: 0))!
}
print( addUnitToDate(.Day, number: 1, date: NSDate()) ) // Adds 1 Day To Current Date
print( addUnitToDate(.Hour, number: 1, date: NSDate()) ) // Adds 1 Hour To Current Date
print( addUnitToDate(.Minute, number: 1, date: NSDate()) ) // Adds 1 Minute To Current Date
// NOTE: You can use negative values to get backward values too
NSDateComponents *dayComponent = [[[NSDateComponents alloc] init] autorelease];
dayComponent.day = 1;
NSCalendar *theCalendar = [NSCalendar currentCalendar];
dateToBeIncremented = [theCalendar dateByAddingComponents:dayComponent toDate:dateToBeIncremented options:0];
ঠিক আছে - আমি ভেবেছিলাম এটি আমার জন্য কাজ করবে। তবে, আপনি যদি 31 শে মার্চ 2013 এ কোনও দিন যোগ করতে এটি ব্যবহার করেন তবে এটি এমন একটি তারিখ ফেরত দেবে যা এতে কেবল 23 ঘন্টা যুক্ত হয়েছে। এটিতে আসলে 24 টি থাকতে পারে তবে গণনাগুলিতে ব্যবহার করতে কেবল 23:00 ঘন্টা যুক্ত হয়েছে।
একইভাবে, আপনি যদি ২৮ শে অক্টোবর ২০১৩-তে এগিয়ে যান তবে কোডটি ২৩ ঘণ্টা যুক্ত করে 2013-10-28 01:00:00 তারিখের সময়।
কোনও দিন যুক্ত করার জন্য আমি জিনিসটি শীর্ষে করছি, যুক্ত করে:
NSDate *newDate1 = [now dateByAddingTimeInterval:60*60*24*daysToAdd];
জটিল, মূলত দিবালোক সংরক্ষণের কারণে।
60*60*24 + 1
লিপ সেকেন্ডের কারণে দৈর্ঘ্য রয়েছে । খেজুর অবশ্যই এই সমস্তগুলি কভার করবে এবং এজন্যই কোকোয় তারিখের হ্যান্ডলিংটি দুর্দান্ত!
NSDate *now = [NSDate date];
int daysToAdd = 1;
NSDate *tomorrowDate = [now dateByAddingTimeInterval:60*60*24*daysToAdd];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEEE, dd MMM yyyy"];
NSLog(@"%@", [dateFormatter stringFromDate:tomorrowDate]);
দ্রুত আপনি এনএসডিটে পদ্ধতি যুক্ত করতে এক্সটেনশন করতে পারেন
extension NSDate {
func addNoOfDays(noOfDays:Int) -> NSDate! {
let cal:NSCalendar = NSCalendar.currentCalendar()
cal.timeZone = NSTimeZone(abbreviation: "UTC")!
let comps:NSDateComponents = NSDateComponents()
comps.day = noOfDays
return cal.dateByAddingComponents(comps, toDate: self, options: nil)
}
}
আপনি এটি হিসাবে ব্যবহার করতে পারেন
NSDate().addNoOfDays(3)
NSDate *now = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
NSDate *startDate = [calendar dateFromComponents:components];
NSLog(@"StartDate = %@", startDate);
components.day += 1;
NSDate *endDate = [calendar dateFromComponents:components];
NSLog(@"EndDate = %@", endDate);
আমারও একই সমস্যা ছিল; এনএসডেটের জন্য একটি এক্সটেনশন ব্যবহার করুন:
- (id)dateByAddingYears:(NSUInteger)years
months:(NSUInteger)months
days:(NSUInteger)days
hours:(NSUInteger)hours
minutes:(NSUInteger)minutes
seconds:(NSUInteger)seconds
{
NSDateComponents * delta = [[[NSDateComponents alloc] init] autorelease];
NSCalendar * gregorian = [[[NSCalendar alloc]
initWithCalendarIdentifier:NSCalendarIdentifierGregorian] autorelease];
[delta setYear:years];
[delta setMonth:months];
[delta setDay:days];
[delta setHour:hours];
[delta setMinute:minutes];
[delta setSecond:seconds];
return [gregorian dateByAddingComponents:delta toDate:self options:0];
}
সুইফট ২.০
let today = NSDate()
let calendar = NSCalendar.currentCalendar()
let tomorrow = calendar.dateByAddingUnit(.Day, value: 1, toDate: today, options: NSCalendarOptions.MatchFirst)
সুইফ্ট 4 বা সুইফ্ট 5-এ আপনি বেলোয়ের মতো ব্যবহার করতে পারেন:
let date = Date()
let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: date)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let yesterday_date = dateFormatter.string(from: yesterday!)
print("yesterday->",yesterday_date)
আউটপুট:
Current date: 2020-03-02
yesterday date: 2020-03-01
স্ট্রিং এক্সটেনশন: স্ট্রিং_ তারিখ> তারিখ রূপান্তর করুন
extension String{
func DateConvert(oldFormat:String)->Date{ // format example: yyyy-MM-dd HH:mm:ss
let isoDate = self
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // set locale to reliable US_POSIX
dateFormatter.dateFormat = oldFormat
return dateFormatter.date(from:isoDate)!
}
}
তারিখ এক্সটেনশন: রূপান্তর তারিখ> স্ট্রিং
extension Date{
func DateConvert(_ newFormat:String)-> String{
let formatter = DateFormatter()
formatter.dateFormat = newFormat
return formatter.string(from: self)
}
}
তারিখ এক্সটেনশন: +/- তারিখ পান
extension String{
func next(day:Int)->Date{
var dayComponent = DateComponents()
dayComponent.day = day
let theCalendar = Calendar.current
let nextDate = theCalendar.date(byAdding: dayComponent, to: Date())
return nextDate!
}
func past(day:Int)->Date{
var pastCount = day
if(pastCount>0){
pastCount = day * -1
}
var dayComponent = DateComponents()
dayComponent.day = pastCount
let theCalendar = Calendar.current
let nextDate = theCalendar.date(byAdding: dayComponent, to: Date())
return nextDate!
}
}
ব্যবহার:
let today = Date()
let todayString = "2020-02-02 23:00:00"
let newDate = today.DateConvert("yyyy-MM-dd HH:mm:ss") //2020-02-02 23:00:00
let newToday = todayString.DateConvert(oldFormat: "yyyy-MM-dd HH:mm:ss")//2020-02-02
let newDatePlus = today.next(day: 1)//2020-02-03 23:00:00
let newDateMinus = today.past(day: 1)//2020-02-01 23:00:00
রেফারেন্স: একাধিক প্রশ্ন থেকে
আমি কীভাবে একটি এনএসডিটে 1 দিন যুক্ত করব?
গণিতের ক্রিয়াটি ইতিবাচক ইনটাকে নেতিবাচক এবং নেতিবাচককে ধনাত্মক রূপান্তর করতে?
এনএসএসটিংকে এনএসডিটে রূপান্তর করা (এবং আবার ফিরে)