2017-03-18 8 views
0

Y-m-dという形式の日付を "1959年1月28日"のような文字列から取得したいと考えています。PHPの日付形式とstrtotime

私はdate("Y-m-d", strtotime($dateString))を試しましたが、1970-01-01を返します。

"1959年1月28日"の定数で上記のコードをデバッグしても問題ありませんが、同じ値を格納する変数に文字列を置き換えると、1970-01-01を返します。

+0

あなたのコードは罰金!!働いています。 –

+0

あなたの文字列の日付はどこですか? –

+0

外部ウェブAPI(http://www.myapifilms.com) –

答えて

0

ソリューションは、日付文字列から特殊文字を削除します:

date("Y-m-d", strtotime(preg_replace('/[^A-Za-z0-9\-]/', '', $dateString))) 
0

これは、システムが負のタイムスタンプを処理できないためです。 strtotimeによって作成されたunixタイムスタンプは、1970-01-01 00:00:00にゼロ点を持ちます。その前の日付は負の数で、後の日付は正の数です。何らかの理由でシステムがタイムスタンプの負の数を解釈できないと思う。

私はそれが役立つかどうかわかりませんが、PHPウェブサイトはa few remarks on this issueです。

私は何、これは出力だろう興味:date('Y-m-d', -1)1969年12月31日でなければなりません。

+0

date( 'Y-m-d'、-1)出力1969-12-31 –

+0

'strtotime( '1959年1月28日)'は' -344822400 'を出力しますか? – Asperitas

+0

はい、それは –