2011-08-17 29 views
6

Tôi đang cố gắng để có được ngày hiện tại với việc thêm múi giờ của thiết bị nhưng được hiển thị trễ 1 giờ mà ngày ban đầu. Tôi điều, tôi đang gặp vấn đề về DaylightSavingTime. Cách tắt isDaylightSavingTime = FALSE.Làm cách nào để nhận NSDate hiện tại giống với Ngày mô phỏng? iPhone Sdk

đây là mã, tôi đã sử dụng ..

NSDate *date = [NSDate Date]; 
NSTimeZone *currentTimeZon = [NSTimeZone localTimeZone]; 
if ([currentTimeZon isDaylightSavingTime]) 
{ 
    NSLog(@"East coast is NOT on DT"); 
} 
else 
{ 
    NSLog(@"East coast is on DT"); 

} 
NSTimeInterval timeZoneOffset = [currentTimeZon secondsFromGMTForDate:currentDate]; 
NSTimeInterval gmtTimeInterval = [date timeIntervalSinceReferenceDate] - timeZoneOffset; 
NSDate *gmtDate = [NSDate dateWithTimeIntervalSinceReferenceDate:gmtTimeInterval]; 
NSLog(@"### Announcement gmtDate = %@",gmtDate); 

Tôi nhận được thời gian với chênh lệch 1 Giờ, ngày là perfact.

+1

Chỉ có một NSD cho mỗi thời điểm (không quan trọng bạn đang ở đâu). Nếu bạn muốn in ngày trong một múi giờ khác nhau sử dụng NSDateFormatter. –

+0

Ya, nhưng tôi muốn chức năng chung sẽ tự động thay đổi theo sự thay đổi múi giờ. có một vấn đề khi isDaylightSavingTime = FALSE. vì vậy tôi muốn đặt isDaylightSavingTime = TRUE nhưng tôi không thể làm điều đó – Sujal

Trả lời

1

Sử dụng NSCalendar, nó hiểu múi giờ, tiết kiệm ánh sáng ban ngày, v.v. Như @albertamg nói, NSDate chỉ là thời gian kể từ khi tham chiếu tại UTC (GMT), nó không có khái niệm nào khác.

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