আমি কীভাবে সপ্তাহের দিনটি ফাউন্ডেশনের সাথে পেতে পারি?


উত্তর:


216
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];

14
এবং সমস্ত সপ্তাহের [dateFormatter weekdaySymbols]
দিনগুলির

ঠিক আছে, সোমবার থেকে শুরু করে সপ্তাহের দিনটি কীভাবে পাব, রবিবারের সাথে নয়?
ভ্লাদিমির স্টাজিলভ

2
@VovaStajilov সম্ভবত এই প্রশ্ন: stackoverflow.com/questions/1106943/... সাহায্য করবে। মূলত আপনাকে ক্যালেন্ডারের প্রথম সপ্তাহ সেট করতে হবে সোমবার হতে রবিবার ([ক্যালেন্ডার সেট ফার্স্ট উইকডে: ২])
ভ্লাদিমির

1
প্রথম এনএসলগ 475221968 দেয় যা সপ্তাহের দিনের জন্য অবাস্তব, বিশাল সংখ্যা। । ।
coolcool1994

ঠিক আছে, @ ভ্লাদিমির, আমি সেট করেছি [gregorian setFirstWeekday:2];এবং সোমবার 01/06/2015 এর জন্য আমি 2 ( [components weekday]) পেয়েছি । কেন? - আমি এখানে
new2ios

18

কেবল এই তিনটি লাইন ব্যবহার করুন:

CFAbsoluteTime at = CFAbsoluteTimeGetCurrent();
CFTimeZoneRef tz = CFTimeZoneCopySystem();
SInt32 WeekdayNumber = CFAbsoluteTimeGetDayOfWeek(at, tz);

3
আমি এটি পছন্দ করি তবে এটি প্রায় কিছু নতুন বিকাশকারীকে (যা একটি খারাপ বোনাস হতে পারে) কাছে
অবহেলা

3
সিএফএবিউসলিউটটাইমগেটডেঅফওয়েক আইওএস-এ অবমুক্ত করা হয়েছে C. সিএফসিএলগ্র্যান্ডার ব্যবহারের বিকল্প উপায় আছে কি?
জর্ডান স্মিথ

15

এখানে বেশিরভাগ উত্তর হ্রাস করা হয়েছে। এটি আইওএস 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);

1
পার্শ্ব নোট হিসাবে - কারণটির weekdayউপাদানটি NSCalendarহ'ল একটি NSInteger, আপনার যদি প্রয়োজন হয় তবে আপনাকে একটিতে কাস্ট [comps weekday]করতে intহবে, অন্যথায় এটি সম্পর্কিত একটি সতর্কতা প্রদর্শন করবে।
মাইলগন

10

আপনি এটি সুইফ্ট 3 এ কীভাবে করেন এবং স্থানীয় দিনের নাম পান ...

let dayNumber = Calendar.current.component(.weekday, from: Date()) // 1 - 7
let dayName = DateFormatter().weekdaySymbols[dayNumber - 1]

সুইফ্ট 3-এ, ক্যালেন্ডারটি এনএসসিএলগ্র্যান্ডের পরিবর্তে ব্যবহার করা উচিত।
jvarela

7
-(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); 
}

3

আমার সপ্তাহের সূচকের একটি সাধারণ (গ্রেগরিয়ান) দিনের দরকার ছিল, যেখানে প্যাটার্ন ম্যাচের অ্যালগরিদমে 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;
}

2

সুইফট 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())

2

আমি মনে করি এই বিষয়টি সত্যই দরকারী, তাই আমি কিছু কোড সুইফট ২.১ সামঞ্জস্যপূর্ণ পোস্ট করি ।

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)
    }

}

এটি কি স্থানীয়? যদি আপনার ইচ্ছিত দেশ "14 ডিসেম্বর, সোমবার" বা "14 সোমবার ডিসেম্বর" ব্যবহার করতে চায়? এটি এতে পরিচালনা করা উচিত
ডেল্টা

হাই @ ডেল্টা 2 ফ্ল্যাট। হ্যাঁ, ফর্ম্যাটটি স্থানীয়ীকৃত। বিটিডব্লু আমি উত্তর আপডেট করেছি: এখন ব্যবহারকারী কাস্টম ফর্ম্যাটটি নির্দিষ্ট করতে পারবেন
লুকা দাভানজো

দুর্দান্ত - আমি দেখতে পেয়েছি যে ওজেক্টিভ-সি / কোকো টাচ স্থানীয়ভাবে স্ট্রাইং অনুযায়ী স্থানীয়করণের স্ট্রিংগুলির সাথে বেশ শক্তিশালী।
delta2flat 1

আপনার সুইফট তিনটি এক্সটেনশানটি এনএসডিট নয় তারিখের হওয়া উচিত।
লিওন

1

ভ্লাদিমিরের উত্তরটি আমার পক্ষে ভালভাবে কাজ করেছে, তবে আমি ভেবেছিলাম যে তারিখের বিন্যাসের স্ট্রিংগুলির জন্য আমি ইউনিকোড লিঙ্কটি পোস্ট করব।

http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns

এই লিঙ্কটি আইওএস 6 এর জন্য iOS আইওএসের অন্যান্য সংস্করণগুলির আলাদা মান রয়েছে যা এক্স কোড ডকুমেন্টেশনে পাওয়া যায়।


1

এইভাবে এটি সুইফটে কাজ করে:

    let calendar = NSCalendar.currentCalendar()
    let weekday = calendar.component(.CalendarUnitWeekday, fromDate: NSDate())

তারপরে ফলাফল সংখ্যাগুলিতে সপ্তাহের দিনগুলি নির্ধারণ করুন।


1
এনএসডিট () GMT + 0 এর জন্য বর্তমান তারিখটি ফেরত দেয়? আপনি এখানে উদাহরণস্বরূপ NSDate ব্যবহার করেন, বা ক্যালেন্ডার উপাদান স্বয়ংক্রিয়ভাবে বর্তমান লোকেল এবং সময় শিফট সনাক্ত করবে?
ডিমা ডিপ্লোভ

0

আমি সপ্তাহের একটি দিন পেয়ে বেশ অদ্ভুত সমস্যা ছিল। শুধুমাত্র প্রথম উইকডে সেট করা যথেষ্ট ছিল না। সময় অঞ্চল নির্ধারণ করাও প্রয়োজনীয় ছিল 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]  ;


0
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";

সপ্তাহের দিনটি ফর্ম্যাট করতে আমরা তিনটি প্রতীক ব্যবহার করতে পারি:

নিম্নলিখিত দুটি নথি আপনাকে সাহায্য করতে পারে।

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html

http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns

ডেমো:

আপনি এই ওয়েবসাইটে আপনার প্যাটার্ন পরীক্ষা করতে পারেন:

http://nsdateformatter.com/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.