web-dev-qa-db-ja.com

NSDateFormatter "Month"の完全な単語ではなく3文字

    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"dd-MM-YYYY HH:mm"];        
    [formatter setTimeZone:[NSTimeZone systemTimeZone]];

MMを選択した場合、月の数を取得します:09-05-2012 15:33MMMMを選択した場合、Wordで月を取得します:09-May-2012 15:33

私が欲しかったのは、3文字の略語で書かれた月でした。
たとえば:JanuaryJanになります

この場合、Mayは3文字しかないので正しいです。

29
bruno

やってみました: [formatter setDateFormat:@"dd-MMM-YYYY HH:mm"]; その後 [formatter stringFromDate:someNSDate];

50
graver

2つのものを間違った順序で取得すると、期待した出力が得られません。

[formatter setDateFormat:@"MMM"];
[formatter setDateStyle:NSDateFormatterMediumStyle];

次と同じ結果は得られません。

[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setDateFormat:@"MMM"];

(これら2つのスニペットの2番目は、私のアプリで9月などを喜んで配布しています)

26
Dan Lingman

In Swift

let dateFormatter = NSDateFormatter()

dateFormatter.dateFormat = "dd MMM yyyy HH:mm"

dateFormatter.stringFromDate(NSDate())
6
hellosheikh

これは、Swift 4で3文字の月の出力を生成する際に機能する、削除されたソリューションです。

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMM YYYY, HH:mm:ss"

確認するには:

print(dateFormatter.string(from: Date())) // 20 Mar 2018, 23:41:40

前述のように、MMMは、目的の月の出力を取得するための正しい構文です。

3
CodeBender

for Swift 4 with with:

if let dateFormatter = DateFormatter(){
    dateFormatter.dateStyle = .medium
    // eventually:
    //let locale = Locale(identifier: ...                       
    //dateFormatter!.locale = locale
    dateFormatter.dateStyle = .medium
    dateFormatter!.dateFormat = "dd MMM YYYY, HH:mm:ss"
 } else..
        ..
1
ingconti

実際には、dateStyleを次のように中(つまり、「Jan」、「Feb」など)に設定できます。

[formatter setDateStyle:NSDateFormatterMediumStyle];
1
Alladinian