NSDateFormatter 尊重用户设置 - 没有分钟
NSDateFormatter respect user settings - no minutes
我正在尝试根据用户的偏好将给定的小时显示为 AM/PM 或 24 小时制。
我目前有:
+ (NSString *)formatWithTemplate:(NSString *)template {
return [NSDateFormatter dateFormatFromTemplate:template options:0 locale:[NSLocale currentLocale]];
}
+ (NSString *)format:(NSDate *)date {
[formatter setDateFormat:[MyFormatter formatWithTemplate:@"h a"]];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
return [formatter stringFromDate:date];
}
用法示例:
如果使用 24 小时制,[MyFormatter format:24]
将显示“24:00”,如果使用 12 小时制(在用户的设备设置中),则显示“12:00 PM”。
但是,对于 12 小时制,它一直显示:“12:00 PM”。有什么方法可以在尊重区域设置和用户设置的同时摆脱 :00 以使其显示:“12 PM”而不是“12:00 PM”?
当我使用:
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
它尊重用户的设置但完全忽略我的格式。但是,如果我使用我的格式,它会忽略用户的设置。
有什么想法吗?
我会让用户设置为准。然后你已经有了一个从中获取字符串的方法。然后根据需要修改字符串。
既然你有信心,你只需要找到并替换字符串 ':00' 就可以了。这是非常简单的事情:
NSString *string = @"12:00 PM"; //get this from the `dateFormatter` `format:date` method you have
NSString *newString = [string stringByReplacingOccurrencesOfString:@":00" withString:@""];
NSLog(@"newString %@",newString);
我正在尝试根据用户的偏好将给定的小时显示为 AM/PM 或 24 小时制。
我目前有:
+ (NSString *)formatWithTemplate:(NSString *)template {
return [NSDateFormatter dateFormatFromTemplate:template options:0 locale:[NSLocale currentLocale]];
}
+ (NSString *)format:(NSDate *)date {
[formatter setDateFormat:[MyFormatter formatWithTemplate:@"h a"]];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
return [formatter stringFromDate:date];
}
用法示例:
如果使用 24 小时制,[MyFormatter format:24]
将显示“24:00”,如果使用 12 小时制(在用户的设备设置中),则显示“12:00 PM”。
但是,对于 12 小时制,它一直显示:“12:00 PM”。有什么方法可以在尊重区域设置和用户设置的同时摆脱 :00 以使其显示:“12 PM”而不是“12:00 PM”?
当我使用:
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
它尊重用户的设置但完全忽略我的格式。但是,如果我使用我的格式,它会忽略用户的设置。
有什么想法吗?
我会让用户设置为准。然后你已经有了一个从中获取字符串的方法。然后根据需要修改字符串。
既然你有信心,你只需要找到并替换字符串 ':00' 就可以了。这是非常简单的事情:
NSString *string = @"12:00 PM"; //get this from the `dateFormatter` `format:date` method you have
NSString *newString = [string stringByReplacingOccurrencesOfString:@":00" withString:@""];
NSLog(@"newString %@",newString);