NSDateFormatter“Month”用3个字母代替完整单词

问题描述 投票:28回答:6
    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"dd-MM-YYYY HH:mm"];        
    [formatter setTimeZone:[NSTimeZone systemTimeZone]];

如果我选择MM我得到月份的数量:09-05-2012 15:33如果我选择MMMM我得到一个月的单词:09-May-2012 15:33

我想要的是3个字母缩写中的月份。 例如:January将是Jan

在这种情况下,May是正确的,因为它只有3个字母。

ios date nsdate nsdateformatter monthcalendar
6个回答
50
投票

你试过:[formatter setDateFormat:@"dd-MMM-YYYY HH:mm"];然后[formatter stringFromDate:someNSDate];


26
投票

如果你得到错误顺序的两件事,你就得不到预期的输出。

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

不会给出相同的结果:

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

(这两个片段中的第二个现在很乐意在我的应用程序中发布Sep Oct等)


6
投票

在SWIFT

let dateFormatter = NSDateFormatter()

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

dateFormatter.stringFromDate(NSDate())

3
投票

这是一个精简的解决方案,可与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是获得所需月份输出的正确语法。


1
投票

实际上你可以将你的dateStyle设置为medium(即'Jan','Feb'等),如下所示:

[formatter setDateStyle:NSDateFormatterMediumStyle];

1
投票

对于swift 4来说:

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..
        ..
© www.soinside.com 2019 - 2024. All rights reserved.