2012-04-10 43 views
8

Tôi đã đặt ngôn ngữ và múi giờ nhưng khi định dạng ngày, tôi luôn nhận ngày không hợp lệ. Tháng luôn luôn là tháng mười hai và năm là một ít hơn năm quy định. Trong trường hợp của tôi, tôi không cần thành phần ngày.Định dạng tháng và năm sử dụng NSDateFormatter trả về ngày không hợp lệ

Tôi đã kiểm tra bài đăng tương tự khác nhưng chưa giải quyết được sự cố.

Mọi trợ giúp đều được đánh giá cao. Cảm ơn bạn.

Đây là mã:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]; 
dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
[dateFormatter setDateFormat:@"MMM YYYY"]; 
NSDate *formattedDate = [dateFormatter dateFromString:@"Sep 2013"]; 
NSLog(@"Date: %@", [dateFormatter stringFromDate:formattedDate]); 
[dateFormatter release]; dateFormatter = nil; 

OUTPUT: Ngày: Dec 2012

Trả lời

15

định dạng "YYYY" được sử dụng cho lịch "Tuần trong năm" dựa. Sử dụng công cụ định dạng "yyyy" thay thế:

[dateFormatter setDateFormat:@"MMM yyyy"]; 
+0

bài này giải thích more.http : //stackoverflow.com/a/8187078/641062 – Vignesh

+0

@Vignesh, cảm ơn liên kết. Có lẽ một số thông số định dạng không có ý nghĩa đối với lịch "Tuần theo năm" và kết quả trong các kết quả khác nhau – Vladimir

+0

Cảm ơn thông tin. :) – Vignesh

0

Tôi chỉ muốn thêm điều gì đó vào câu trả lời tuyệt vời của Vladimir. Nếu bạn làm điều này trước khi thiết lập ngôn ngữ của bạn, có vẻ như định dạng ngày trở nên điên rồ. Những gì tôi phải làm là để thiết lập miền địa phương trước khi thiết lập định dạng mới, và sau đó sử dụng setDateFormat để thay đổi định dạng dựa trên ngôn ngữ used.So một cái gì đó như thế này sẽ làm:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setLocale:[NSLocale currentLocale]];//I wanted to set the locale to wherever user is using my app in 
[formatter setDateFormat:@"MMM YYYY"]; 
NSDate *now = [NSDate Date]; 
NSString *fancyLookingDate = [formatter stringFromDate:now]; 
+0

Tôi nghĩ rằng '[formatter setDateStyle: NSDateFormatterShortStyle];' và '[formatter setTimeStyle: NSDateFormatterNoStyle];' là thừa trong mã của bạn. Nếu bạn sử dụng 'setDateFormat', cuộc gọi trước đó để đặt kiểu ngày và kiểu thời gian sẽ bị bỏ qua. –

+0

@YuchenZhong không biết điều đó, ngày và giờ được định dạng riêng biệt. Cảm ơn vì bạn đã phản hồi. – Septronic

+0

@YuchenZhong Chỉ cần chỉnh sửa câu trả lời của tôi để phản ánh nhận xét của bạn. – Septronic

Các vấn đề liên quan