दिलचस्प पोस्ट
क्यों करता है (0 <5 <3) वापस सही है? एलन हॉलब ने लिखा है, "क्या आपको मिलना चाहिए / फ़ंक्शंस सेट नहीं करना चाहिए", क्या वह सही है? अपरिभाषित विधि mysqli_stmt :: get_result को कॉल करें आप div तत्वों को इनलाइन प्रदर्शित कैसे करते हैं? एसक्यूएल सर्वर केवल हाल ही के मूल्यों का उपयोग करके अलग-अलग पंक्तियों का चयन करता है जैक्सन के साथ धारावाहिक ऊर्जा एक पृष्ठभूमि स्क्रिप्ट से सामग्री स्क्रिप्ट तक संदेश भेजना, फिर इंजेक्शन वाली स्क्रिप्ट के लिए अजगर में तार पर धूमिल मैं Windows में चलने वाली सभी प्रक्रियाओं को कैसे सूचीबद्ध कर सकता हूं? Chrome में मुद्रण करते समय href मान को निकालना आवश्यक है X86 में "अस्थायी" स्मृति अभिगमों का क्या अर्थ है? विम में पायथन कोड चलाना ऐप VS 2008 SP1 DLL के साथ नहीं चला है, पिछले संस्करण RTM संस्करणों के साथ काम करता है स्ट्रिंग से चारों ओर से सभी घटनाओं को निकालें विधि में एक प्रकार की विधि के रूप में एक ही मिटाना होता है

सप्ताह के पहले दिन NSCalendar

क्या किसी को पता है कि अगर सप्ताह के पहले दिन एनएससीएलेन्डर पर सेट करने का कोई तरीका है, या क्या कोई ऐसा कैलेंडर है जो सोमवार को सप्ताह के पहले दिन के रूप में पहले से ही रविवार के स्थान पर है मैं वर्तमान में एक ऐप पर काम कर रहा हूं जो एक हफ्ते के लायक काम पर आधारित है, और इसे सोमवार को नहीं, रविवार को शुरू करने की आवश्यकता है मैं इसके आसपास काम करने के लिए कुछ काम कर सकता हूं, लेकिन बहुत से कोने के मामलों में होगा मैं मंच को मेरे लिए करना चाहता हूँ

अग्रिम में धन्यवाद

यहाँ कुछ कोड है जिसका उपयोग मैं कर रहा हूं। यह अब शनिवार है, तो मुझे क्या उम्मीद होगी कि सप्ताह के दिन 6 की बजाय 6 होगी। इसका मतलब यह होगा कि रविवार को 0 से बढ़कर 7

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; [gregorian setFirstWeekday:0]; unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit; NSDateComponents *todaysDate = [gregorian components:unitFlags fromDate:[NSDate date]]; int dayOfWeek = todaysDate.weekday; 

वेब के समाधान से एकत्रित समाधान "सप्ताह के पहले दिन NSCalendar"

संपादित करें: यह बढ़त का मामला नहीं देखता है जहां सप्ताह की शुरुआत पहले महीने में शुरू होती है। कुछ नवीनीकृत कोड इसे कवर करने के लिए: https://stackoverflow.com/a/14688780/308315


अगर कोई भी अभी भी इस पर ध्यान दे रहा है, तो आपको उपयोग करने की आवश्यकता है

 ordinalityOfUnit:inUnit:forDate: 

और पहले दोपहर 2 को सेट करें। (1 == रविवार और 7 = शनिवार)

यहां कोड है:

 NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; [gregorian setFirstWeekday:2]; // Sunday == 1, Saturday == 7 NSUInteger adjustedWeekdayOrdinal = [gregorian ordinalityOfUnit:NSWeekdayCalendarUnit inUnit:NSWeekCalendarUnit forDate:[NSDate date]]; NSLog(@"Adjusted weekday ordinal: %d", adjustedWeekdayOrdinal); 

याद रखें, सप्ताह के दिनों के लिए ऑडियंस सप्ताह के पहले दिन 1 पर शुरू होते हैं, शून्य नहीं।

दस्तावेज़ीकरण लिंक

यह कोड एक तारीख तैयार करता है जो चालू सप्ताह के सोमवार तक सेट है:

 NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDate *today = [NSDate date]; NSDate *beginningOfWeek = nil; BOOL ok = [gregorian rangeOfUnit:NSWeekCalendarUnit startDate:&beginningOfWeek interval:NULL forDate: today]; 

setFirstWeekday : NSCalendar ऑब्जेक्ट पर। रिसीवर के लिए पहले सप्ताह के दिन सूचकांक सेट करता है।

 - (void)setFirstWeekday:(NSUInteger)weekday 

चाल करना चाहिए

मेरी राय में यह सेटिंग उपयोगकर्ता लोकेल के अनुसार गतिशील होना चाहिए I इसलिए इसका उपयोग करना चाहिए:

 NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; [gregorian setLocale:[NSLocale currentLocale]]; 

इससे कैलेंडर को उपयोगकर्ता के स्थान के अनुसार स्वचालित रूप से पहले सप्ताह के दिन सेट करना होगा। जब तक आप किसी विशिष्ट उद्देश्य / उपयोगकर्ता लोकेल (या उपयोगकर्ता को इस दिन का चयन करने के लिए अनुमति देने के लिए पसंद करते हैं) के लिए अपना ऐप विकसित नहीं कर रहे हैं।

क्रिस के जवाब के साथ समस्या बढ़त का मामला है जहां सप्ताह की शुरुआत पहले महीने में शुरू होती है। यहां कुछ आसान कोड है और यह बढ़त का मामला भी देखता है:

 // Finds the date for the first day of the week - (NSDate *)getFirstDayOfTheWeekFromDate:(NSDate *)givenDate { NSCalendar *calendar = [NSCalendar currentCalendar]; // Edge case where beginning of week starts in the prior month NSDateComponents *edgeCase = [[NSDateComponents alloc] init]; [edgeCase setMonth:2]; [edgeCase setDay:1]; [edgeCase setYear:2013]; NSDate *edgeCaseDate = [calendar dateFromComponents:edgeCase]; NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:edgeCaseDate]; [components setWeekday:1]; // 1 == Sunday, 7 == Saturday [components setWeek:[components week]]; NSLog(@"Edge case date is %@ and beginning of that week is %@", edgeCaseDate , [calendar dateFromComponents:components]); // Find Sunday for the given date components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:givenDate]; [components setWeekday:1]; // 1 == Sunday, 7 == Saturday [components setWeek:[components week]]; NSLog(@"Original date is %@ and beginning of week is %@", givenDate , [calendar dateFromComponents:components]); return [calendar dateFromComponents:components]; } 

मैंने इसे ऐसा किया है।

 NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDate *today = [NSDate date]; NSDateComponents *compForWeekday = [gregorian components:(NSWeekdayCalendarUnit) fromDate:today]; NSInteger weekDayAsNumber = [compForWeekday weekday]; // The week day as number but with sunday starting as 1 weekDayAsNumber = ((weekDayAsNumber + 5) % 7) + 1; // Transforming so that monday = 1 and sunday = 7 

मुझे यहाँ बहुत सारे जवाबों के साथ परेशानी थी । शायद यह सिर्फ मुझे था ।

यह एक जवाब है जो मेरे लिए काम करता है:

 - (NSDate*)firstDayOfWeek { NSCalendar* cal = [[NSCalendar currentCalendar] copy]; [cal setFirstWeekday:2]; //Override locale to make week start on Monday NSDate* startOfTheWeek; NSTimeInterval interval; [cal rangeOfUnit:NSWeekCalendarUnit startDate:&startOfTheWeek interval:&interval forDate:self]; return startOfTheWeek; } - (NSDate*)lastDayOfWeek { NSCalendar* cal = [[NSCalendar currentCalendar] copy]; [cal setFirstWeekday:2]; //Override locale to make week start on Monday NSDate* startOfTheWeek; NSTimeInterval interval; [cal rangeOfUnit:NSWeekCalendarUnit startDate:&startOfTheWeek interval:&interval forDate:self]; return [startOfTheWeek dateByAddingTimeInterval:interval - 1]; } 

अद्यतन करें:

जैसा कि, जैसा कि जैसा कि विकीचिकित्सागुंडो ने बताया है, स्थानीय रूप से सबसे अच्छा यह निर्धारित करने के लिए कि किस दिन सप्ताह की शुरुआत है, हालांकि इस मामले में ओपी सोमवार को होने वाले सप्ताह की शुरुआत के लिए कह रहा था, इसलिए हम प्रतिलिपि बनाते हैं। प्रणाली कैलेंडर, और पहलीWeekDay को ओवरराइड।

मुझे अन्य संदेशों में गलतफहमी दिखाई देती है पहले सप्ताह के दिन, जो भी हो, में नंबर 1 नहीं है 0. डिफ़ॉल्ट रूप से रविवार = 1 जैसे "कोका के लिए तिथि और समय प्रोग्रामिंग गाइड का परिचय: कैलेंडर कैलकुलेशन":

"ग्रेगोरियन कैलेंडर में रविवार के लिए रविवार का दिन मूल्य 1 है"

सोमवार को पहले कामकाज के रूप में केवल एक उपाय के लिए गणना करने के लिए जबरदस्त बल की स्थिति है

 NSCalendar *cal=[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *comps = [cal components:NSWeekdayCalendarUnit fromDate:[NSDate date]]; // set to 7 if it's Sunday otherwise decrease weekday number NSInteger weekday=[comps weekday]==1?7:[comps weekday]-1; 

नीचे किनारे के मामले को भी शामिल किया गया है,

 - (NSDate *)getFirstDayOfTheWeekFromDate:(NSDate *)givenDate { NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:givenDate]; [components setWeekday:2]; // 1 == Sunday, 7 == Saturday if([[calendar dateFromComponents:components] compare: curDate] == NSOrderedDescending) // if start is later in time than end { [components setWeek:[components week]-1]; } return [calendar dateFromComponents:components]; } 

इसे इस्तेमाल करे:

 NSCalendar *yourCal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] [yourCal setFirstWeekday:0]; 

… क्या ऐसा कैलेंडर है जो सोमवार को सप्ताह के पहले दिन के रूप में, रविवार की बजाय

किसी दिन, वहाँ हो जाएगा

Iv ने एनएसकेएलएंडडर का उपयोग करते हुए किसी भी सप्ताह के दिन का नाम प्रदर्शित करने का तरीका पता लगाया .. नीचे दिए गए कोड को इस्तेमाल करते हुए .. बस एक्सकोड मेनू बार से परिणामों को देखने के लिए अपना कंसोल खोलें। प्रतिलिपि सप्ताह के पहले दिन प्राप्त करने के लिए अपने दृश्यडीडलोड पद्धति में निम्न कोड पेस्ट करें।

 NSDate *today = [NSDate date]; NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"MM/dd/yyyy :EEEE"]; NSString *dateString = [dateFormat stringFromDate:today]; NSLog(@"date: %@", dateString); [dateFormat release]; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [gregorian components:NSWeekdayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:today]; [components setDay:([components day]-([components weekday]-1))]; NSDate *beginningOfWeek = [gregorian dateFromComponents:components]; NSDateFormatter *dateFormat_first = [[NSDateFormatter alloc] init]; [dateFormat_first setDateFormat:@"MM/dd/yyyy :EEEE"]; NSString *dateString_first = [dateFormat_first stringFromDate:beginningOfWeek]; NSLog(@"First_date: %@", dateString_first); 

आउटपुट होगा:

  date: 02/11/2010 :Thursday First_date: 02/07/2010 :Sunday 

चूंकि मैंने 2-11-2010 को इस कार्यक्रम को चलाया था, आप वर्तमान तिथि के आधार पर वांछित उत्पादन प्राप्त करेंगे।

इसी तरह अगर आप सप्ताह के पहले कार्य दिवस यानी सोमवार की तारीख प्राप्त करना चाहते हैं तो बस कोड को थोड़ी सी बदल दें:

परिवर्तन: [components setDay:([components day]-([components weekday]-1))];

TO [components setDay:([components day]-([components weekday]-2))];

उस सप्ताह के लिए सोमवार की तारीख प्राप्त करने के लिए ..

इसी प्रकार आप पूर्णांक -1, -2 और इतने पर बदलकर सात कार्यदिवसों में से किसी की तारीख का पता लगाने की कोशिश कर सकते हैं …

आशा है कि उर सवाल का उत्तर है ..

धन्यवाद, बोनसन डायस

ऐसा करने का मेरा आसान तरीका सोमवार = 0, रविवार = 6 प्राप्त करना है:

  NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:[NSDate date]]; NSInteger dayNumStartingFromMonday = ([dateComponents weekday] - 2 + 7) % 7; //normal: Sunday is 1, Monday is 2 

आईएसओ 8601 कैलेंडर का मानना ​​है कि इसे सोमवार तक सोमवार तक सेट किया गया पहला सप्ताह का दिन है।

अगले सप्ताह (आईओएस 10 या बाद के संस्करण) कैलेंडर और ऑर्डरलाइन (धन्यवाद @ क्रिस-मार्केल) का उपयोग करना। मैंने en_US कैलेंडर के लिए सप्ताह के पहले सोमवार को मिल गया है।

यहां का पहला उदाहरण है फ़ॉलबैक से पहले वेकडे तक:

 extension Calendar { var firstWorkWeekday: Int { guard #available(iOS 10.0, *) else{ return self.firstWeekday } guard let endOfWeekend = self.nextWeekend(startingAfter: Date())?.end else { return self.firstWeekday } return self.ordinality(of: .weekday, in: .weekOfYear, for: endOfWeekend) ?? self.firstWeekday } } 

आप बस बदल सकते हैं। पहले कैलेंडर का कैलेंडर।

 NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; calendar.firstWeekday = 2; 

फिर rangeOfUnit:startDate:interval:forDate: उपयोग rangeOfUnit:startDate:interval:forDate: पहले दिन प्राप्त करने के लिए

 NSDate *startOfWeek; [calendar rangeOfUnit:NSCalendarUnitWeekOfYear startDate:&startOfWeek interval:nil forDate:[NSdate date]];