2012-04-23 29 views
10

nếu tôi cố gắng:Tại sao NSDate từ chuỗi có một ngày ít hơn?

NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyyMMdd"]; 

[formatter dateFromString:@"20120423"]; 

đối tượng NSDate mới của tôi sẽ là: 2012 04 22 . Tại sao một ngày ít hơn?

Thank

+2

vùng được đặt trong trình mô phỏng hoặc thiết bị của bạn là gì. Nó sẽ mặc định vùng đó. – rishi

+0

đó là về múi giờ ... sự khác biệt có thể chỉ là một vài giờ chỉ() hoặc thậm chí chỉ một, như '2017-06-02 00:00:00 GMT + 1' bằng với' 2017-06-01 23:00:00 GMT + 0' có vẻ như là một ngày ngắn, nếu bạn quan tâm đến các giá trị năm tháng. – holex

Trả lời

19

Bạn có vấn đề với múi giờ và nó có thể được giải quyết bằng cách thêm dòng mã này:

formatter.timeZone = [NSTimeZone timeZoneWithName:@"GMT"]; 
+1

Bạn thực sự hữu ích !!! Tôi đã giải quyết vấn đề từ một ngày trước và lớp lót đơn giản này đã hoạt động :) – Pushkraj

2

Đối với những người tìm kiếm nhanh chóng phiên bản 3

let formatter  = DateFormatter() 
formatter.timezone = TimeZone(abbreviation: "GMT") 
formatter.dateFormat = "yyyyMMdd" 
formatter.date(from: "20120423") 
0

Đối với một loại lót sử dụng Swift 3

Date.init(dateString: "2014-07-31", format: "yyyy-MM-dd", timeZone: TimeZone.init(abbreviation: "GMT")!) 
Các vấn đề liên quan