これは難しいことではありません..
年なしで日付を表示したい。例: 「8 月 2 日」(米国) または「02.08」。(ドイツ) 他の多くのロケールでも機能するはずです。
これまでの私の唯一のアイデアは、年で通常の形式を実行し、生成された文字列から年の部分を削除することです。
これは難しいことではありません..
年なしで日付を表示したい。例: 「8 月 2 日」(米国) または「02.08」。(ドイツ) 他の多くのロケールでも機能するはずです。
これまでの私の唯一のアイデアは、年で通常の形式を実行し、生成された文字列から年の部分を削除することです。
私はあなたが見てみる必要があると思います:
+ (NSString *)dateFormatFromTemplate:(NSString *)template options:(NSUInteger)opts locale:(NSLocale *)locale
ドキュメントに従って:
指定されたロケールに合わせて適切に配置された、指定された日付形式コンポーネントを表すローカライズされた日付形式文字列を返します。戻り値 locale で指定されたロケールに合わせて適切に配置された、テンプレートで指定された日付形式コンポーネントを表すローカライズされた日付形式文字列。
返される文字列には、テンプレートで指定されたコンポーネントが正確に含まれていない場合がありますが、たとえば、ロケール固有の調整が適用されている場合があります。
討論
ロケールが異なれば、日付コンポーネントの順序付けの規則も異なります。このメソッドを使用して、指定されたロケールの特定のコンポーネント セットに適した書式文字列を取得します (通常は、現在のロケールを使用します。currentLocale を参照してください)。
次の例は、イギリス英語とアメリカ英語の日付形式の違いを示しています。
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSLocale *gbLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
NSString *dateFormat;
// NOTE!!! I removed the 'y' from the example
NSString *dateComponents = @"MMMMd"; //@"yMMMMd";
dateFormat = [NSDateFormatter dateFormatFromTemplate:dateComponents options:0 locale:usLocale];
NSLog(@"Date format for %@: %@",
[usLocale displayNameForKey:NSLocaleIdentifier value:[usLocale localeIdentifier]], dateFormat);
dateFormat = [NSDateFormatter dateFormatFromTemplate:dateComponents options:0 locale:gbLocale];
NSLog(@"Date format for %@: %@",
[gbLocale displayNameForKey:NSLocaleIdentifier value:[gbLocale localeIdentifier]], dateFormat);
// Output:
// Date format for English (United States): MMMM d, y
// Date format for English (United Kingdom): d MMMM y
追加のコード (上記のコードに追加):
//
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
formatter.locale = gbLocale;
formatter.dateFormat = dateFormat;
NSLog(@"date: %@", [formatter stringFromDate: [NSDate date]]);
ここを参照してください: NSDateFormatter クラスリファレンス
あなたが挙げた2つの例は、互いに非常に異なっています。1 つは省略された月名を使用し、もう 1 つは 2 桁の月番号を使用します。1 つは日の序数 ("2nd") を使用し、もう 1 つは単純に 2 桁の日付番号を使用します。
すべてのロケールで同じ一般的な形式を使用できる場合は、NSDateFormatter dateFormatFromTemplate:options:locale:
.
NSString *localFormat = [NSDateFormatter dateFormatFromTemplate:@"MMM dd" options:0 locale:[NSLocale currentLocale]];
この呼び出しの結果は、 で使用できるフォーマット文字列を返しますNSDateFormatter setDateFormat:
。月と日の順序は、追加する必要のある句読点だけでなく、ロケールにも適しています。
ただし、ロケールごとに必要な形式が完全に異なるため、これは正確なニーズを解決しません。