2013-05-30 63 views
5

im bằng cách sử dụng PHP 5.3 và đã đọc rất nhiều tài liệu trong vấn đề đó nhưng vẫn không thể giải được một giải pháp.ngày tháng trước năm 1970

Tôi muốn nhập ngày sinh nhật 1945/01/10 từ excel vào mysql sử dụng php bất cứ điều gì tôi đã cố gắng không cho tôi kết quả (im nhận được một số âm)

đây là giải pháp cuối cùng mà tôi đã cố gắng :

$ data là file excel (im sử dụng excel đọc lớp cho rằng)

$date_of_birth = ($data->sheets[0]['cells'][$i][11] - 25569) * 86400; 

kết quả là -2207692800

Tôi đang làm gì ở đây?

+0

Nơi nào bạn nhận được giá trị tiêu cực này? Trong PHP hoặc trong bảng MySQL? Đảm bảo loại cột là DATE, vì nó có thể xử lý các ngày như vậy. – silkfire

+4

xin lỗi, 25569 là gì? – jimmy

+0

Hoàn toàn không có cách nào để trả lời câu hỏi này nếu bạn không giải thích '25569' xuất phát từ đâu và những gì nó được cho là đại diện. Để bắt đầu, Excel có Epoch và PHP của riêng nó có thể xử lý các ngày như là các đối tượng, vì vậy năm 1970 có thể không liên quan gì cả. –

Trả lời

4

Ngày trước kỷ nguyên Unix được biểu diễn dưới dạng âm bản trong PHP, do đó bạn không làm gì sai.
Khi bạn sử dụng bất kỳ chức năng nào trong số các chức năng date time trên dấu thời gian, bạn sẽ nhận được giá trị chính xác.

+1

-2207692800 không ở bất cứ đâu gần ngày 01/10/1945. -788144400. –

+0

Tôi sẽ cung cấp cho nó một đi và xem những gì tôi nhận được ... –

+0

Có thể là PHP cũng đại diện cho micro giây hoặc một số như vậy –

1

Tại sao bạn đang cố gắng chuyển đổi ngày MSExcel thành dấu thời gian unix (không tương thích) để đưa dữ liệu vào MySQL? Chỉ cần có những tuyến đường trực tiếp:

$qry="INSERT INTO birthdays (person, birthday) 
    VALUES ('$person', 18991231000000 + INTERVAL " 
    . $data->sheets[0]['cells'][$i][11] . " DAY)"; 

(giá trị số nguyên được lưu trữ trong Msexcel là số ngày kể từ 31 Tháng 12 1899)

+1

Chỉ cần xem ra cho ngày 29 tháng 2 năm 1900 :) –

+0

@MarkBaker 1900 không phải là năm nhuận - Excel có gặp vấn đề gì không? –

+0

@ ring0 - Tôi biết nó không phải là, nhưng MS Excel tin rằng nó là, như Lotus 1-2-3 trước đó (MS giới thiệu rằng lỗi vào Excel để đảm bảo khả năng tương thích với Lotus 1-2-3) –

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