[英]Not able to get weekday from Date
我從coredata獲取日期,並嘗試獲取該日期的工作日。我嘗試了以下代碼,但無法正常工作。
NSDateFormatter *weekDayFormatter = [[NSDateFormatter alloc]init];
[weekDayFormatter setDateFormat:@"EEEE"];
NSDate *weekDay = [results valueForKey:@"date"];
NSLog(@"%@",weekDay);//This log is working.
NSString *weekDayString = [weekDayFormatter stringFromDate:weekDay];
NSLog(@"%@",weekDayString); //This log is displaying null.
NSLog(@"%@ is spent on %@",[results valueForKey:@"amount"],weekDayString);
如果我使用的是[NSDate date]
而不是[results valueForKey:@"date"]
,則它可以正常工作。
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents =[gregorian components:NSWeekdayCalendarUnit fromDate:dateOfInterest];
NSInteger weekday = [weekdayComponents weekday];
// weekday 1 = Sunday for Gregorian calendar
[gregorian release];
嘗試使用NSCalendar
從NSDate
提取NSDateComponents
。
我認為[results valueForKey:@"date"]
給出了NSString類型的對象。 檢查一次。 如果為true,則將其轉換為NSDate。
情況1:
NSDateFormatter *weekDayFormatter = [[NSDateFormatter alloc]init];
[weekDayFormatter setDateFormat:@"EEEE"];
NSDate *weekDay = @"2013-03-13 11:06:55 +0000";//here warning is there...
NSLog(@"%@",weekDay);//This log is working.
NSString *weekDayString = [weekDayFormatter stringFromDate:weekDay];
NSLog(@"%@",weekDayString); //It gives NULL...
在這種情況下,答案為空。
情況2:
NSDateFormatter *weekDayFormatter = [[NSDateFormatter alloc]init];
[weekDayFormatter setDateFormat:@"EEEE"];
NSDate *weekDay = [NSDate date];
NSLog(@"%@",weekDay);//This log is working.
NSString *weekDayString = [weekDayFormatter stringFromDate:weekDay];
NSLog(@"%@",weekDayString); //It gives results...
在這種情況下,答案是yourResult。
您必須使用從[結果鍵值:@“日期”]中收到的日期格式。 之后,您嘗試根據需要格式化日期。
NSDateFormatter *weekDayFormatter = [[NSDateFormatter alloc]init];
[weekDayFormatter setDateFormat:SAME FORMAT YOU RECEIVING];
NSDate *weekDay = [weekDayFormatter dateFromString:[results valueForKey@"date"]];
NSLog(@"%@",weekDay);
[weekDayFormatter setDateFormat:@"EEEE"];
NSString *weekDayString = [weekDayFormatter stringFromDate:weekDay];
// Your date as a string
NSString *yourDate = @"02-09-2011 20:54:18"; // [results valueForKey:@"date"]
// Prepare an NSDateFormatter to convert to and from the string representation
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// set format as your Date string (Eg. dd/MM/yyyy for 25/12/2012)
[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"];
// Parse the string representation of the date
NSDate *date = [dateFormatter dateFromString:yourDate];
NSDateFormatter* theDateFormatter = [[NSDateFormatter alloc] init];
[theDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[theDateFormatter setDateFormat:@"EEEE"];
NSString *weekDay = [theDateFormatter stringFromDate:date];
NSLog(@"%@",weekDay);
NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *todayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:today];
NSLog(@"weekday = %d",[todayComponents weekday]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.