iphone - NSDateFormatter,我做错了什么还是这是一个错误?

标签 iphone ios objective-c nsdate nsdateformatter

我正在尝试以某种格式打印日期:

NSDate *today = [[NSDate alloc] init];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyyMMddHHmmss"];
NSString *dateStr = [dateFormatter stringFromDate:today];

如果 iPhone 设置为 24 小时制,这可以正常工作,另一方面,如果用户将其设置为 24 小时制,然后返回 AM/PM(在您切换此设置之前它可以正常工作)然后它即使我没有要求,也会在末尾附加 AM/PM:

20080927030337 PM

是我做错了什么还是固件 2.1 的错误?

编辑 1:使描述更清晰

编辑 2 解决方法:事实证明这是一个错误,为了修复它,我将 AM 和 PM 字符设置为“”:

[dateFormatter setAMSymbol:@""];
[dateFormatter setPMSymbol:@""];

最佳答案

这种行为的原因是语言环境,它设置了正确的语言环境。

NSDateFormatter 的本地设置为 en_US_POSIX 将解决此问题。 它适用于 24 小时制和 12 小时制。

在 iPhone OS 上,用户可以覆盖默认的 AM/PM 与 24 小时时间设置(通过设置 > 常规 > 日期和时间 > 24 小时时间),这会导致 NSDateFormatter 重写您的格式字符串设置。 来自 apple doc

试试这个,

NSDate *today = [[NSDate alloc] init];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"yyyyMMddHHmmss"];
NSString *dateStr = [dateFormatter stringFromDate:today];

关于iphone - NSDateFormatter,我做错了什么还是这是一个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/143075/

相关文章:

ios - 如何将包括图像在内的静态信息动态导入 ViewController

iphone - 如何在 iPhone 中将标签拖放到 UIToolbarItem 上

iphone - 像 'Booth' 系列这样的图像失真应用程序如何工作?

iphone - 如何避免在设备旋转时将 ImageView 更改为旋转

ios - 在 Objective c 中处理导航

ios - Textfield 确实结束了编辑崩溃应用程序

iphone - iOS - 多个 NSURLConnection 下载

ios - NSTimer 更改文本

iphone - 有什么方法可以在 UITableView 中显示 Google/Yahoo/Bing 搜索结果吗?

objective-c - #define 语句在 Objective-C 中的正确位置