2011-01-18 28 views
5

Tôi giữ ngày và giờ trong cửa hàng CoreData của mình và cần hiển thị chính xác cho người dùng thời gian như đã nhập ban đầu. Vấn đề là nếu họ bước vào 4:00 trên bờ biển phía Đông, sau đó nhìn vào thời gian ghi lại trên bờ biển phía Tây, nó xuất hiện như 1:00, kể từ khi iPhone dịch thời gian phổ quát đến giờ địa phương. Tôi cần nó để hiển thị 4:00 - có lẽ 4:00 (+ 3h00).Làm NSDate trong CoreData đóng gói múi giờ?

Trước khi tôi đi và cơ cấu lại mô hình Dữ liệu cốt lõi của mình, tôi muốn chắc chắn không có cách nào để lấy NSTimeZone hoạt động ở thời gian tạo từ đối tượng NSDate đã lưu trữ. Lanhung? Nếu không, bất kỳ đề xuất nào tốt nhất để nắm bắt NSTimeZone tại thời điểm tạo bản thân mình? Một NSNumber đại diện cho sự khác biệt thời gian tạo NSTimeZone từ GMT?

Cảm ơn.

+1

Câu hỏi hay! Đó là một sự nhầm lẫn kinh điển. Câu trả lời ngắn gọn là không.' –

Trả lời

8

Khi bạn đã phát hiện ra, NSDate đại diện cho một điểm phổ quát trong thời gian và không bao gồm thông tin múi giờ cụ thể.

Tôi đề xuất thay vì lưu trữ bù trừ, lưu trữ thuộc tính name của NSTimeZone. Sau đó, bạn có thể sử dụng +[NSTimeZone timeZoneWithName:] để nhận múi giờ và từ đó chuyển đổi múi giờ thành giờ địa phương. Điều này mang lại cho bạn sự linh hoạt tối đa trong cách bạn hiển thị thông tin cho người dùng.

+0

+1 vì không cố gắng để futz về với 'NSDate'! Lưu trữ thông tin múi giờ riêng biệt chắc chắn là cách để đi. –

+0

Trong hầu hết các trường hợp, bạn cũng có thể lưu trữ ngày dưới dạng GMT và thực hiện chuyển đổi theo múi giờ địa phương của người dùng khi bạn cần hiển thị thông tin. –

+0

Cảm ơn! Điều này có vẻ giống như một cách tiếp cận tốt, ngoại trừ việc tôi không nghĩ rằng tài sản tên nắm bắt được thời gian bù giờ ban ngày. Có lẽ là một trường hợp thực tế, nhưng không phải là tôi có thể sử dụng tên của múi giờ châu Âu làm cơ sở để chuyển đổi sang một múi giờ của người Mỹ, và chuyển đổi sai vì chênh lệch múi giờ bất thường trong tuần đó hoặc hai unsync'ed DST? Có lẽ tốt nhất để nắm bắt bù đắp từ GMT vào thời điểm nhập cảnh sau khi tất cả? Tôi cho rằng tôi cũng có thể lưu trữ tên múi giờ hoặc từ viết tắt chỉ cho thông tin người dùng. – ed94133

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