2009-05-28 28 views
8

tôi nhìn thấy một hành vi kỳ lạ với cố gắng để có được giây kể từ kỷ nguyên trong mục tiêu C. này:hành vi Odd với timeIntervalSince1970

NSString *nowTimestamp = [NSString stringWithFormat:@"%d", 
          [[NSDate date] timeIntervalSince1970]]; 

Đầu ra 15.907.296, khi dấu thời gian hiện nay nên được 1243555623 (2009/05/28 @ 7:08 tối EST). Thời gian hệ thống trên iPhone là chính xác. Tôi không thể tìm ra cuộc sống của tôi những gì tôi đang làm sai. Bất kỳ đề xuất?

Trả lời

31

timeIntervalSince1970 trả về giá trị NSTimeInterval, là một typedef cho gấp đôi; % d không phải là trình định dạng phù hợp để in gấp đôi (bạn muốn% f).

+0

Hà, cảm ơn, tôi biết tôi đã làm điều gì đó ngu ngốc. – Parrots

1

Bạn có chắc chắn rằng kết quả từ NSDate là số thập phân không? Các tài liệu nói rằng nó là một đôi. Bạn có thể thử đúc.

Ngoài ra, đôi khi bạn sẽ nhận được một giá trị con trỏ trở lại thay vì giá trị thực tế, nếu có điều gì là một NSNumber dưới lớp chăn, bạn có thể cần phải sử dụng intValue, hoặc doubleValue để có được nội dung thực tế của những gì là tại địa chỉ.

+0

Vâng, bạn sẽ cần% f –

5

Khi trở về từ [[NSDate date] timeIntervalSince1970]; là một đôi, bạn có thể thử này:

NSString *nowTimestamp = [NSString stringWithFormat:@"%f", 
         [[NSDate date] timeIntervalSince1970]]; 
Các vấn đề liên quan