Get Day From Day in iOS sdk

In my application, you want to get the day (i.e. Sunday , Monday , etc.) from the date.

My code is as follows:

 NSDate *currentDate = [NSDate date]; NSCalendar *calendar = [NSCalendar currentCalendar]; //ask for current week NSDateComponents *comps = [[NSDateComponents alloc] init]; comps=[calendar components:NSWeekCalendarUnit|NSYearCalendarUnit fromDate:currentDate]; //create date on week start NSDate* weekstart=[calendar dateFromComponents:comps]; //add 7 days NSMutableArray* week=[NSMutableArray arrayWithCapacity:7]; for (int i=1; i<=7; i++) { NSDateComponents *compsToAdd = [[NSDateComponents alloc] init]; compsToAdd.day=i; NSDate *nextDate = [calendar dateByAddingComponents:compsToAdd toDate:weekstart options:0]; NSLog(@"%@",nextDate); // date is 2013-06-30 18:30:00 +0000 NSDateFormatter *myFormatter = [[NSDateFormatter alloc] init]; [myFormatter setDateFormat:@"EEEE"]; // day, like "Saturday" //[myFormatter setDateFormat:@"c"]; // day number, like 7 for saturday NSString *dayOfWeek = [myFormatter stringFromDate:nextDate]; 

PROBLEM

  NSLog(@"Today is: %@", dayOfWeek); // Prints Mondays instead of Sunday } 

How can i solve this?

+1
source share
7 answers

Try the following:

  NSCalendar* calender = [NSCalendar currentCalendar]; NSDateComponents* component = [calender components:NSWeekdayCalendarUnit fromDate:[NSDate date]]; return [component weekday]; // 1 for Sunday, 2 for Monday, and so on... 

and see also this day name from NSDate? , and this is https://discussions.apple.com/thread/1700102?start=0&tstart=0

Edit

try it

 NSString * time = @"2013-06-30T11:00:26+0100"; NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease]; [df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; NSDate *date1 = [df dateFromString:time]; long lgTime = (long)[date1 timeIntervalSince1970]; NSLog(@"%ld", lgTime); NSCalendar* calender = [NSCalendar currentCalendar]; NSDateComponents* component = [calender components:NSWeekdayCalendarUnit fromDate:date1]; NSLog(@"date=%@ === %@",[NSDate date],date1); NSLog(@"day= %d",[component weekday]); ///it return 1 
+6
source
  NSCalendar* calender = [NSCalendar currentCalendar]; NSDateComponents* component = [calender components:NSWeekdayCalendarUnit fromDate:[NSDate date]]; int weekDay = [component weekday]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; NSString *weekdayString = [[formatter weekdaySymbols] objectAtIndex:weekDay - 1]; NSLog(@"Day ::: %@", weekdayString); 
+6
source
 NSDateFormatter* theDateFormatter = [[NSDateFormatter alloc] init]; [theDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; [theDateFormatter setDateFormat:@"EEEE"]; NSString *weekDay = [theDateFormatter stringFromDate:[NSDate date]]; 
+5
source

I made a small NSDate category that helps you find the name of the day of the week from the date. It returns a localized string for workday names. Look at it. You can use it if you want.

NKLocalizedWeekday + NSDate

Basically, this is the code you need:

 NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [calendar components:NSWeekdayCalendarUnit fromDate:[NSDate date]]; int weekdayNumber = [components weekday]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; NSString *weekdayString = [[formatter weekdaySymbols] objectAtIndex:weekdayNumber - 1]; 
+1
source
 mydate = [NSDate date]; NSDateFormatter *dt2 = [ [NSDateFormatter alloc] init]; [dt2 setDateFormat:@"EEEE"]; NSString *day = [[NSString alloc] initWithFormat:@"%@",[dt2 stringFromDate:mydate]]; 
0
source

you are facing a problem because it takes a local time zone

try it

  NSDateFormatter *dateformate = [[NSDateFormatter alloc] init] ; [dateformate setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Sydney"]]; [dateformate setDateFormat:@"EEEE"]; NSLog(@"%@", [dateformate stringFromDate:[NSDate date]]); NSLog(@"%@", [NSTimeZone knownTimeZoneNames]); 

set the time zone you need. He can work and help you.

a similar problem in NSCalendar on the first day of the week the link refer it.also can help you.

0
source

I use this and it worked for me in iOS 8.4

 -(NSString *) extractDayFromDate { NSCalendar* calender = [NSCalendar currentCalendar]; NSDateComponents* component = [calender components:NSCalendarUnitWeekday fromDate:[NSDate date]]; return [[calender weekdaySymbols] objectAtIndex:([component weekday]-1)]; } 
0
source

Source: https://habr.com/ru/post/949193/


All Articles