2010-10-06 31 views
8

Trong ứng dụng iPhone của tôi, tôi đang cố gắng để có được EEE MMM dd từ một chuỗi ngày nhận được bởi một dịch vụ web.NSDateFormatter trả về một ngày tắt theo ngày

Đối với tất cả các ngày có thời gian là < 07:00, NSDateFormatter sẽ trả về ngày bị tắt trước 1 ngày. Ví dụ: Ngày định dạng: 2010-11-17T05: 00: 00, định dạng kết quả ngày: Tue Apr 16

Dưới đây là đoạn mã: NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat: @"EEE MMM dd"];

NSDate *dateToFormat = [NSDate dateWithNaturalLanguageString:dateStringToFormat locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]];

NSString *formattedDateString = [dateFormat stringFromDate:dateToFormat]; [dateFormat release];

gì có thể là vấn đề?

+0

Bạn sống ở đâu và dịch vụ web sử dụng múi giờ nào? – Yuji

Trả lời

10

Có thể có liên quan đến múi giờ. Bạn có thể cần phải thiết lập một giá trị thích hợp cho thuộc tính timeZone của đối tượng NSDateFormatter của bạn.

+0

Hmm, vì vậy tôi đặt thuộc tính múi giờ là localTimeZone. Nhưng kết quả vẫn như cũ. Nó hoạt động khi thời gian là hơn 7 giờ sáng. Nhưng bất cứ điều gì trước đó, gây ra ngày quay trở lại một ngày. – Mansi

+4

Đây là bản sửa lỗi: [dateFormat setTimeZone: [NSTimeZone timeZoneWithAbbreviation: @ "GMT"]]; – Mansi

2

Tôi gặp vấn đề tương tự nhưng chỉ sau khi cập nhật lên iOS4. formatter của tôi là như thế này:

[aDateFormatter setDateFormat: @ "yyyy-MM-dd HH: mm: ss z"];

ngày của tôi như thế này:

2009-10-27 7:30:12 -0700

tôi quản lý để khắc phục vấn đề chỉ bằng cách di chuyển các thiết lập ngày chế độ chọn trước áp dụng ngày tối đa/phút/ngày đã chọn cho bộ chọn ngày. Trong trường hợp của tôi:

aDatePicker.datePickerMode = UIDatePickerModeDate;

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