NSDateFormatter没有空间到/ pm

时间:2014-04-01 08:28:18

标签: ios iphone objective-c nsdateformatter

我使用以下日期格式化程序:

+ (NSDateFormatter *)dateFormatter {
    static NSDateFormatter *_dateFormatter = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSString *format = [NSDateFormatter dateFormatFromTemplate:@"MMM d h:mm a" options:0 locale:[NSLocale currentLocale]];
        _dateFormatter = [[NSDateFormatter alloc] init];
        [_dateFormatter setDateFormat:format];
    });
    return _dateFormatter;
}  

输出示例可能是:

Mar 25, 2:05 PM  

我需要改变一件事:
小时和上午/下午之间没有空格

像这样:

Mar 25, 2:05PM

5 个答案:

答案 0 :(得分:2)

尝试这个解决方案,它对我有用。 (只需删除mm和a之间的空格)

+ (NSDateFormatter *)dateFormatter {
static NSDateFormatter *_dateFormatter = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    NSString *format = [NSDateFormatter dateFormatFromTemplate:@"MMM d h:mma" options:0 locale:[NSLocale currentLocale]];
    _dateFormatter = [[NSDateFormatter alloc] init];
    [_dateFormatter setDateFormat:format];
});
return _dateFormatter;

}

答案 1 :(得分:1)

我正在使用DateFormatter.dateFormat(fromTemplate: "h:mma", options: 0, locale: Locale.current)!,但是在我的上午/下午标记之前一直添加一个空格。直接使用字符串设置dateFormat属性。

let formatter = DateFormatter()
formatter.amSymbol = "a"
formatter.pmSymbol = "p"
formatter.dateFormat = "h:mma"
let timeLabel = formatter.string(from: Date())

答案 2 :(得分:-1)

+ (NSDateFormatter *)dateFormatter {
    static NSDateFormatter *_dateFormatter = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _dateFormatter = [[NSDateFormatter alloc] init];
        [_dateFormatter setDateFormat:@"MMM d, h:mmaaa"];
    });
    return _dateFormatter;
}

如何不使用模板? 模板的上午/下午不能用分钟,很奇怪

答案 3 :(得分:-1)

你能尝试这样吗

static NSDateFormatter *_dateFormatter = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    NSString *format = [NSDateFormatter dateFormatFromTemplate:@"MMM d h:mm a" options:0 locale:[NSLocale currentLocale]];
    _dateFormatter = [[NSDateFormatter alloc] init];
    [_dateFormatter setDateFormat:format];
});

NSString *date = [_dateFormatter stringFromDate:[NSDate date]];
NSArray *aa = [date componentsSeparatedByString:@" "];
NSString *combinedString = [date stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@" %@",[aa lastObject]] withString:[aa lastObject]];

NSLog(@"date : %@",combinedString);

答案 4 :(得分:-1)

我创建了一个简单但不必要的最佳解决方案。所以我用我的字符串将它呈现在UILabel中。因此,我将UILabel称为ClockLabel,并覆盖标签文本的setter。这是代码:

- (void)setText:(NSString *)text {
    text = [text stringByReplacingOccurrencesOfString:@" am" withString:@"am"];
    text = [text stringByReplacingOccurrencesOfString:@" pm" withString:@"pm"];
    [super setText:text];
}

必须有其他一些解决方案,但我坚持这个。