Unicode 日期格式模式指南(此处)指出,将“a”附加到格式将获得句点(例如 AM 或 PM),例如,
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss a"];
但是,我希望确保不出现期间信息,但我找不到执行此操作的格式字符串。我使用的格式字符串如下:
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
不幸的是,当我使用 stringFromDate 时,我得到以下信息:
2013-01-09T11:11:00 AM
我不希望简单地从结果字符串中删除 AM 或 PM,因为不同日历等中的句点语法可能不同,我只想停止出现句点信息。
----8<------
考虑以下代码
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSString *stringDate = [formatter stringFromDate:[NSDate date]];
self.labelOutput.text = stringDate;
[formatter release];
此代码将生成我想要的格式的字符串 - 但是出于内存管理原因我不能使用它。我正在开发的应用程序受到 NSDateFormatter 内存泄漏的困扰。所以我们使用一个单例类来为应用程序提供一个固定数量的 NSDateFormatters,这些 NSDateFormatters 永远不会被释放,因此我们最大限度地减少了泄漏的内存量。不幸的是,即使我这样应用日期格式字符串,这些静态 NSDateFormatter 也会附加 AM / PM:
NSDateFormatter *formatter = [MyDateFormatter dateFormat:kFormatDateMediumStyleTimeShortStyle];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];