2013-03-18 18 views
5

Có cách nào để có được ngày cụ thể (cách) khi các tia sáng ban ngày bắt đầu và kết thúc cho mỗi quốc gia sử dụng C hoặc Mục tiêu-C?Tìm dấu thời gian DST (Daylight Savings Time) bằng Objective-C/C?

Ở Mexico, thời gian mùa hè bắt đầu vào Chủ nhật đầu tiên vào tháng 4 lúc 2:00 sáng và kết thúc vào Chủ Nhật cuối cùng của tháng 10 lúc 2:00 sáng. Trong nhiều hệ thống POSIX này được viết dưới dạng

M4.1.0/2,M10.5.0/2 
(Begins: Month 4, 1st Sunday at 02:00AM, Ends: Month 10, last Sunday at 02:00AM) 

Tôi biết người ta có thể biết nếu tiết kiệm ánh sáng ban ngày hiện đang hoạt động sử dụng

NSTimeZone* systemTimeZone = [NSTimeZone systemTimeZone]; 
BOOL dstIsOn = [systemTimeZone isDaylightSavingTime]; 

và rằng nó có thể để có được thời gian cho đến khi tới Daylight Savings bắt đầu

NSTimeZone* systemTimeZone = [NSTimeZone systemTimeZone]; 
NSTimeInterval delta = [systemTimeZone daylightSavingTimeOffset]; 

NHƯNG: Làm cách nào để tìm ngày cụ thể giúp tiết kiệm/kết thúc vào ban ngày?

Có một số bảng giết người ở đó mà tôi không thể tìm thấy?

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!

+0

FYI, ở Hoa Kỳ, thời gian tiết kiệm ánh sáng ban ngày của chúng tôi đã tăng thêm khoảng 3 tuần vào mỗi đầu. –

+0

@CarlVeazey Bạn thực sự đúng. Thay đổi đất nước để Méjico mặc dù sẽ vui mừng thay đổi nó để Glorious Nation của Kazakhstan đã họ quan sát DST. – Groot

Trả lời

8

Có, có - bạn có thể sử dụng phương thức [NSTimeZone nextDaylightSavingTimeTransitionAfterDate:]. Điều này trả về một số NSDate, mà bạn có thể sử dụng với daylightSavingTimeOffsetForDate để thiết lập mức chênh lệch.

Thông thường bạn sẽ sử dụng tính năng này để tìm khoản bù tiếp theo, nhưng rõ ràng bạn có thể chạy nhiều lần với các ngày khác nhau để nhận được một loạt các thay đổi về tiết kiệm ánh sáng ban ngày sắp tới. Ngoài ra còn có một phương pháp tiện lợi nextDaylightSavingTimeTransition sẽ luôn trả lại quá trình chuyển đổi tiếp theo.

+0

Sẽ dùng thử, cảm ơn! – Groot

+0

Hãy nhớ rằng các quy tắc DST thay đổi thường xuyên hơn sau đó Apple phát hành bản cập nhật iOS. Vì vậy, ngày từ các phương pháp NSTimeZone có thể đã lỗi thời. Trong dự án của chúng tôi, chúng tôi sử dụng, như bạn gọi nó là "bảng kẻ giết người", được cập nhật theo cách thủ công. – Jeepston

+0

@Jeepston Vâng, tôi đã nhận thức được điều đó ... Tôi không may mắn đến mức bàn kẻ giết người của bạn bị bắt? ;) – Groot

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