我使用以下日期格式化程序:
+ (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
答案 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];
}
必须有其他一些解决方案,但我坚持这个。