web-dev-qa-db-ja.com

iPhoneアプリで文字列を日付に変換する

文字列形式の日付を含むiPhone用のカレンダーアプリケーションを作成しました(例:「Tue、25 May 2010 12:53:58 +0000」)。

これをNSDateに変換したい。

そのために何を使用する必要がありますか?

55
AppAspect

NSDateFormatterのクラス参照 をご覧ください。次のように使用します。

NSString *dateStr = @"Tue, 25 May 2010 12:53:58 +0000";

// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EE, d LLLL yyyy HH:mm:ss Z"];
NSDate *date = [dateFormat dateFromString:dateStr]; 
[dateFormat release];

NSDateFormatterをカスタマイズする方法の詳細については、 このリファレンスガイド を試してください。

編集:

ご存知のとおり、これは完全な月名を解析します。 3文字の月名が必要な場合は、LLLの代わりにLLLLを使用します。

129
Sam Ritchie
-(NSString *)dateToFormatedDate:(NSString *)dateStr {
    NSString *finalDate = @"2014-10-15";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    NSDate *date = [dateFormatter dateFromString:dateStr];
    [dateFormatter setDateFormat:@"EE, d MMM, YYYY"];
    return [dateFormatter stringFromDate:date];
}
8
Anand Prakash

IOSのスタイルのいずれかで日付を保存している場合、この方法を使用する方がはるかに簡単でエラーが少なくなります。

// Define a date formatter for storage, full style for more flexibility
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterFullStyle];
[dateFormatter setTimeStyle:NSDateFormatterFullStyle];

// Use today as an example
NSDate *today = [NSDate date];
// Format to a string using predefined styles
NSString *dateString = [dateFormatter stringFromDate:today];
// Format back to a date using the same styles
NSDate *todayFromString = [dateFormatter dateFromString:dateString];
5