2

これを探していて、なかなか見つかりませんでした。NSDate を含む NSDictionary にオブジェクトがあります。現在、標準の NSDate オブジェクトはかなり長いです。ユーザーをdd-MMM形式で表示したい。

例: 元の日付は2012-04-23 00:00:00 +0000、日付を次のように表示したい場合があります。23 Apr

NSDateComponents と NSDateFormatter を使用してみましたが、うまくいきませんでした。おそらく、必要な形式の正しい使用法を理解していません。

理解を深めるためのコードは次のとおりです。

            NSLog(@"From Dictionary, Date = %@",[tmpDict objectForKey:@"eventDate"]);
            NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
            [dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss Z"]; 
            NSString *dateString = [tmpDict objectForKey: @"eventDate"];
            NSDate *date = [dateFormatter dateFromString: dateString];

            NSLog(@"MY DATE: %@",date);
            NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
            [dateFormatter2 setDateFormat:@"dd-MMM"];
            NSString *formattedDateString = [dateFormatter2 stringFromDate:date];
            NSLog(@"Formatted Date: %@",formattedDateString);

出力は 2012-05-19 07:30:56 でFrom Dictionary, Date、Formatted Date と MY DATE では null です。そしてtmpDict、私が使用している辞書オブジェクトです。

事前に助けてくれてありがとう。

4

3 に答える 3

3

Duncan Cの回答に続きます。

日付が文字列として表されている場合は、まず日付に変換してから NSDateFormatter を使用します。フォーマットが同じままであると仮定すると、

[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss Z"]; 
NSString *dateString = [dictionaryObject objectForKey: @"eventDate"];
NSDate *date = [dateFormatter dateFromString: dateString];

次に、オブジェクトに対して現在行っていることを実行できdateます。

于 2012-05-13T20:36:08.533 に答える
2
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MMM"];
NSString *formattedDateString = [dateFormatter stringFromDate:myDate];
[dateFormatter release];
于 2012-05-13T18:47:16.187 に答える
1

キー eventDate を使用して辞書からフェッチしているオブジェクトは、日付ではなく文字列であるように聞こえます。

このコードを試してください:

NSDate *myDate=[tmpDict objectForKey:@"eventDate"]; 
NSLog(@"myDate class = %@", [myDate class]);

NSDateではなく、NSStringのクラスまたはそのサブクラスの1つを示しているに違いありません。

于 2012-05-13T19:30:08.780 に答える