উত্তর:
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"EEEE"];
NSLog(@"%@", [dateFormatter stringFromDate:[NSDate date]]);
বর্তমান আঞ্চলিক সেটিংসের উপর নির্ভর করে লোকালে স্ট্রিং হিসাবে সপ্তাহের বর্তমান দিনকে আউটপুট দেয়।
মাত্র এক সপ্তাহের দিনের নম্বর পেতে আপনাকে অবশ্যই এনএসক্যালেন্ডার শ্রেণিটি ব্যবহার করতে হবে:
NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *comps = [gregorian components:NSWeekdayCalendarUnit fromDate:[NSDate date]];
int weekday = [comps weekday];
কেবল এই তিনটি লাইন ব্যবহার করুন:
CFAbsoluteTime at = CFAbsoluteTimeGetCurrent();
CFTimeZoneRef tz = CFTimeZoneCopySystem();
SInt32 WeekdayNumber = CFAbsoluteTimeGetDayOfWeek(at, tz);
এখানে বেশিরভাগ উত্তর হ্রাস করা হয়েছে। এটি আইওএস 8.4 হিসাবে কাজ করে এবং সপ্তাহের একটি স্ট্রিং এবং একটি সংখ্যা হিসাবে আপনাকে দেয়।
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEEE"];
NSLog(@"The day of the week: %@", [dateFormatter stringFromDate:[NSDate date]]);
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *comps = [gregorian components:NSCalendarUnitWeekday fromDate:[NSDate date]];
int weekday = [comps weekday];
NSLog(@"The week day number: %d", weekday);
weekday
উপাদানটি NSCalendar
হ'ল একটি NSInteger
, আপনার যদি প্রয়োজন হয় তবে আপনাকে একটিতে কাস্ট [comps weekday]
করতে int
হবে, অন্যথায় এটি সম্পর্কিত একটি সতর্কতা প্রদর্শন করবে।
আপনি এটি সুইফ্ট 3 এ কীভাবে করেন এবং স্থানীয় দিনের নাম পান ...
let dayNumber = Calendar.current.component(.weekday, from: Date()) // 1 - 7
let dayName = DateFormatter().weekdaySymbols[dayNumber - 1]
-(void)getdate {
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init] ;
[dateFormatter setDateFormat:@"EEEE"];
NSDate *now = [[NSDate alloc] init];
NSString *dateString = [format stringFromDate:now];
NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];
NSString *week = [dateFormatter stringFromDate:now];
NSLog(@"\n"
"theDate: |%@| \n"
"theTime: |%@| \n"
"Now: |%@| \n"
"Week: |%@| \n"
, theDate, theTime,dateString,week);
}
আমার সপ্তাহের সূচকের একটি সাধারণ (গ্রেগরিয়ান) দিনের দরকার ছিল, যেখানে প্যাটার্ন ম্যাচের অ্যালগরিদমে 0 = রবিবার এবং 6 = শনিবার ব্যবহার করতে হবে। সেখান থেকে সূচকের সাহায্যে কোনও অ্যারে থেকে দিনের নামটি সন্ধান করা সহজ বিষয়। আমি এখানে এলাম যার সাথে তারিখের বিন্যাসগুলির প্রয়োজন হয় না বা এনএসক্যালেন্ডার বা তারিখের উপাদানগুলির ম্যানিপুলেশন প্রয়োজন হয় না:
+(long)dayOfWeek:(NSDate *)anyDate {
//calculate number of days since reference date jan 1, 01
NSTimeInterval utcoffset = [[NSTimeZone localTimeZone] secondsFromGMT];
NSTimeInterval interval = ([anyDate timeIntervalSinceReferenceDate]+utcoffset)/(60.0*60.0*24.0);
//mod 7 the number of days to identify day index
long dayix=((long)interval+8) % 7;
return dayix;
}
সুইফট 3-র জন্য আপডেট হওয়া কোডটি এখানে
কোড:
let calendar = Calendar(identifier: .gregorian)
let weekdayAsInteger = calendar.component(.weekday, from: Date())
ইভেন্টের নামটি স্ট্রিং হিসাবে মুদ্রণ করতে:
let dateFromat = DateFormatter()
datFormat.dateFormat = "EEEE"
let name = datFormat.string(from: Date())
আমি মনে করি এই বিষয়টি সত্যই দরকারী, তাই আমি কিছু কোড সুইফট ২.১ সামঞ্জস্যপূর্ণ পোস্ট করি ।
extension NSDate {
static func getBeautyToday() -> String {
let now = NSDate()
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "EEEE',' dd MMMM"
return dateFormatter.stringFromDate(now)
}
}
যে কোনও জায়গায় আপনি কল করতে পারেন:
let today = NSDate.getBeautyToday()
print(today) ---> "Monday, 14 December"
সুইফট 3.0
@ ডেল্টাফ্লাফ্টের পরামর্শ অনুসারে, আমি ব্যবহারকারীকে কাস্টম ফর্ম্যাট নির্দিষ্ট করার ক্ষমতা প্রদান করে উত্তর আপডেট করি।
extension NSDate {
static func getBeautyToday(format: String = "EEEE',' dd MMMM") -> String {
let now = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
return dateFormatter.string(from: now)
}
}
ভ্লাদিমিরের উত্তরটি আমার পক্ষে ভালভাবে কাজ করেছে, তবে আমি ভেবেছিলাম যে তারিখের বিন্যাসের স্ট্রিংগুলির জন্য আমি ইউনিকোড লিঙ্কটি পোস্ট করব।
http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns
এই লিঙ্কটি আইওএস 6 এর জন্য iOS আইওএসের অন্যান্য সংস্করণগুলির আলাদা মান রয়েছে যা এক্স কোড ডকুমেন্টেশনে পাওয়া যায়।
এইভাবে এটি সুইফটে কাজ করে:
let calendar = NSCalendar.currentCalendar()
let weekday = calendar.component(.CalendarUnitWeekday, fromDate: NSDate())
তারপরে ফলাফল সংখ্যাগুলিতে সপ্তাহের দিনগুলি নির্ধারণ করুন।
আমি সপ্তাহের একটি দিন পেয়ে বেশ অদ্ভুত সমস্যা ছিল। শুধুমাত্র প্রথম উইকডে সেট করা যথেষ্ট ছিল না। সময় অঞ্চল নির্ধারণ করাও প্রয়োজনীয় ছিল ces আমার কাজের সমাধানটি ছিল:
NSCalendar* cal = [NSCalendar currentCalendar];
[cal setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[cal setFirstWeekday:1]; //Sunday
NSDateComponents* comp = [cal components:( NSWeekOfMonthCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit) fromDate:date];
return [comp weekday] ;
সুইফট 2: এক লাইনে সপ্তাহের দিন পান। ( নিওস্ক্রিপ্ট উত্তরের ভিত্তিতে )
let dayOfWeek = Int((myDate.timeIntervalSinceReferenceDate / (60.0*60.0*24.0)) % 7)
let isMonday = (dayOfWeek == 0)
let isSunday = (dayOfWeek == 6)
self.dateTimeFormatter = [[NSDateFormatter alloc] init];
self.dateTimeFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; // your timezone
self.dateTimeFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"zh_CN"]; // your locale
self.dateTimeFormatter.dateFormat = @"ccc MM-dd mm:ss";
সপ্তাহের দিনটি ফর্ম্যাট করতে আমরা তিনটি প্রতীক ব্যবহার করতে পারি:
নিম্নলিখিত দুটি নথি আপনাকে সাহায্য করতে পারে।
http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns
ডেমো:
আপনি এই ওয়েবসাইটে আপনার প্যাটার্ন পরীক্ষা করতে পারেন:
[dateFormatter weekdaySymbols]