2013-05-30 7 views
5

imはPHP 5.3を使用していますが、その点では多くの資料を読んでいますが、解決策はまだありません。私はここ(イムが負の数を取得)私php date before 1970

を結果が得られなかった私が試したものは何でもPHP を使用してMySQLにExcelから誕生日1945年1月10日をインポートしたい

は私がしようとした最後の解決策であります:

$データは、Excelファイルは結果だった

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

(そのためにExcelのリーダークラスを使用してIM)である-2207692800

ここで何をしているの?

+0

:ちょうど直接ルートを取りますか? PHPまたはMySQLのテーブルで?このような日付を処理できるので、列の型がDATEであることを確認してください。 – silkfire

+4

すみません、25569は何ですか? – jimmy

+0

「25569」がどこから来ているのか、そしてそれが何を表しているのか説明していないなら、この質問には絶対に答えられません。まず、Excelには独自のEpochがあり、PHPはオブジェクトとして日付を扱うことができるため、1970年はまったく関連しないかもしれません。 –

答えて

4

Unixエポック以前の日付は、PHPでネガティブとして表されているので、間違ったことはしていません。
タイムスタンプでdate time関数のいずれかを使用すると、正しい値が得られます。

+1

-2207692800は、01/10/1945に近いところにはありません。 -788144400はです。 –

+0

私はそれを行って何が得られるかを見てみましょう... –

+0

PHPもマイクロ秒またはそのようなものを表す可能性があります –

1

なぜデータをMySQLに入れるには、MSExcelの日付を(互換性のない)unixタイムスタンプに変換しようとしていますか?あなたは、この負の値を得るのですか

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

(MSExcelに格納された整数値は、1899年12月31日からの日数です)

+1

1900年2月29日に気をつけてください:) –

+0

@ MarkBaker 1900はうるう年ではありません - Excelに問題はありますか? –

+0

@ ring0 - 私はそうではないことを知っていますが、MS ExcelはこれがLotus 1-2-3と同じだと考えています(MSはそのエラーをExcelに導入してLotus 1-2-3との互換性を確保しています) –