sao chép từ một câu hỏi tương tự tôi đã trả lời ở đây: NSDateFormatter returns nil for @"dd-MM-yy" in iOS 3.0
Nếu bạn đang làm việc với các ngày sử dụng có thể nhìn thấy, bạn nên tránh thiết lập một chuỗi định dạng ngày tháng. Ngày định dạng theo cách này không thể định vị được và không thể dự đoán chuỗi định dạng của bạn sẽ được thể hiện như thế nào trong tất cả các cấu hình người dùng có thể. Thay vào đó, bạn nên thử và giới hạn bản thân để thiết lập kiểu ngày tháng và thời gian (thông qua - [NSDateFormatter setDateStyle:] và - [NSDateFormatter setTimeStyle:]).
Mặt khác, nếu bạn đang làm việc với ngày định dạng cố định, trước tiên bạn nên đặt ngôn ngữ của trình định dạng ngày thành một cái gì đó phù hợp với định dạng cố định của bạn. Trong hầu hết các trường hợp, ngôn ngữ tốt nhất để chọn là "en_US_POSIX", một ngôn ngữ được thiết kế đặc biệt để mang lại kết quả bằng tiếng Anh Mỹ bất kể sở thích của người dùng và hệ thống. "en_US_POSIX" cũng là bất biến theo thời gian (nếu Hoa Kỳ, tại một thời điểm nào đó trong tương lai, thay đổi cách định dạng ngày, "en_" sẽ thay đổi để phản ánh hành vi mới, nhưng "en_US_POSIX" sẽ không) và giữa các máy ("en_US_POSIX" hoạt động tương tự trên iPhone OS giống như trên Mac OS X, và giống như trên các nền tảng khác).
Khi bạn đã đặt "en_US_POSIX" làm ngôn ngữ của trình định dạng ngày, bạn có thể đặt chuỗi định dạng ngày và trình định dạng ngày sẽ hoạt động nhất quán cho tất cả người dùng.
Thông báo thông tin trên và nhiều hơn nữa có thể được tìm thấy trong của Technical Q&A QA1480
Dưới đây là một đoạn mã từ ứng dụng của tôi mà thực hiện các khuyến nghị trên của Apple:
static NSDateFormatter* dateFormatter = nil;
if (!dateFormatter) {
dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[[NSLocale alloc]
initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
NSAssert(enUSPOSIXLocale != nil, @"POSIX may not be nil.");
[dateFormatter setLocale:enUSPOSIXLocale];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
dateFormatter.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss +0000";
}
Đó là điều 24 giờ nhận được tôi rõ ràng. Cảm ơn. – jamone