0

次の文字列から月と日を分離しようとしています。

2012-06-29

次のようにして、文字列をミディアムスタイルにフォーマットしてみました。

//Setting Up My Formatter
formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];

Forming String Into Formatted Date
NSDate *dateFromString = [formatter dateFromString:event.date];

//Separating Components
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:dateFromString];

//Assigning Each Component to my Cell's Labels
cell.dayLabel.text = [NSString stringWithFormat:@"%d", [components day]];
cell.monthLabel.text = [NSString stringWithFormat:@"%d", [components month]];

NSLogsを実行すると、「event.date」が「2012-06-26」に戻り、dateFromStringがnullに戻りました。誰かが私の正しい方向へのガイドを手伝ってくれますか?どうもありがとうございました。

編集:

それで、私はついにあなたの助けから私がフォーマットを間違って設定していたことを理解しました。使用する代わりに:

[formatter setDateStyle:NSDateFormatterMediumStyle];

私は今使用しています:

[formatter setDateFormat:@"yyyy-MM-dd"];

これが私の質問ですが、コンポーネントから、月は整数(1、2、3)として返されますが、「MMM」(1月、2月、3月)として返されるようにします。ありがとう!

4

3 に答える 3

2

これが私がそれをする方法です:

まず、NSDateFormatterを作成して、文字列を適切に取り込みます。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:"yyyy-MM-dd"];

文字列から日付を取得します。

NSDate *yourDate = [formatter dateFromString:@"2012-06-29"];

日付のコンポーネントを取得します。

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:yourDate];

コンポーネントのプロパティを取得します。

[components day];    
[components month];
[components year];

リリースする必要があるものをリリースします。

[formatter release];

コメント返信:

はい、ほとんど逆のことをする必要があります。

別のNSDateFormatterを作成します(参照を使用:http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns)

NSDateFormatter *monthFormat = [[NSDateFormatter alloc] init];
[monthFormat setDateFormat:@"MMM"];

NSString *month = [monthFormat stringFromDate:yourDate];

[monthFormat release];

`この時点で、小文字で、おそらく少し長すぎるので、好きなように切り捨て/大文字にすることができます。(参照を確認してください)

于 2012-05-16T14:02:29.807 に答える
1

( NSDateFormatterリファレンスからの)dateFromString次の形式の文字列を期待するように指示したため、は失敗します。

1937年11月23日午後3時30分

次のようなものを使用してカスタムフォーマットを設定する必要があります。

[formatter setDateFormat:@"yyyy-MM-dd"];
于 2012-05-16T13:59:33.517 に答える
0

setDateFormatを設定してみてください

[フォーマッターsetDateFormat:@ "yyyy-MM-dd"];

于 2012-05-16T13:57:46.100 に答える