NSDateFormatter setDateFormat の序数月日サフィックスオプション 質問する

NSDateFormatter setDateFormat の序数月日サフィックスオプション 質問する

月日の序数接尾辞を取得するには、NSDateFormatter のどの setDateFormat オプションを使用すればよいですか?

例えば、以下のスニペットは現在、次のものを生成します:
8月15日土曜日午後3時11分


8月15日土曜日午後3時11分までに何を変える必要がありますか?番目

NSDate *date = [NSDate date];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[dateFormatter setDateFormat:@"h:mm a EEEE MMMM d"];
NSString *dateString = [dateFormatter stringFromDate:date]; 
NSLog(@"%@", dateString);

PHP では、上記のケースではこれを使用します。
<?php echo date('h:m A l F jS') ?>

NSDateFormatterに相当するものはありますか?PHP フォーマット文字列のオプションですか?

ベストアンサー1

これらの回答はどれも私が使用しているものほど美的に満足できるものではなかったので、共有しようと思いました。


スイフト3:

func daySuffix(from date: Date) -> String {
    let calendar = Calendar.current
    let dayOfMonth = calendar.component(.day, from: date)
    switch dayOfMonth {
    case 1, 21, 31: return "st"
    case 2, 22: return "nd"
    case 3, 23: return "rd"
    default: return "th"
    }
}

目的:

- (NSString *)daySuffixForDate:(NSDate *)date {
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSInteger dayOfMonth = [calendar component:NSCalendarUnitDay fromDate:date];
    switch (dayOfMonth) {
        case 1:
        case 21:
        case 31: return @"st";
        case 2:
        case 22: return @"nd";
        case 3:
        case 23: return @"rd";
        default: return @"th";
    }
}

明らかに、これは英語でのみ機能します。

おすすめ記事