0

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"]ます。

4

6 に答える 6

3
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];
于 2013-03-13T11:14:32.113 に答える
1

を使用してNSCalendarから抽出してみてNSDateComponentsくださいNSDate

于 2013-03-13T11:12:39.690 に答える
0
NSDate *today = [NSDate date];

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDateComponents *todayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:today];

NSLog(@"weekday = %d",[todayComponents weekday]);
于 2013-03-13T12:32:09.790 に答える
0

[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...

この場合、答えは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です。

于 2013-03-13T11:19:09.647 に答える
0

[results valueforKey:@"date"]から受け取ったものと同じ日付形式を使用する必要があります。その後、必要に応じて日付をフォーマットしようとします。

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];
于 2013-03-13T11:19:33.443 に答える
0
// 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);
于 2013-03-13T11:26:13.843 に答える