2009-08-04 11 views
1

次の文字列mm [some char] dd [some char] yyyyをyyyymmddに変換するPHPの最良の方法は何ですか? 私はおそらく、地元のことによると、将来dd [some char] mm [some char] yyyyと同じことをしたいと思うでしょう。
すでにZend FrameworkのAPIを使用する方法がある場合は、あなたが任意の日付書式文字と上記の第二文でYmdを置き換えることができます文字列をmysqlの日付に変換する最も良い方法は何ですか?

答えて

2
<?php 
$str = '08-24-1989'; // can be in any recognizable date format.  
$new_str = date('Ymd', strtotime($str)); // produces "20090824". 
?> 

より良いhereを発見しました。

ZendのZend_Dateフレームワークを使用する場合は、いくつかの例とドキュメントhereを参照してください。率直に言っても、PHP関数はあなたの場合にはずっと簡単で使いやすくなっています。

+0

月が12日月が明白でない場合、これらの関数は間違った結果を生成する可能性があります。ちょっと注意して、いくつかの日付をチェックしてください:) –

+1

私はY-m-d形式で常に滞在することをお勧めします。それは常に正しいと思われる。 – smack0007

+0

私は今月から翌日(時、分、秒 - Y-m-d H:i:s形式)のことに同意します。 _sort_と_compare_は簡単です。 – wenbert

1

date('Ymd', strtotime($time));

Strtotime絶対にあなたは、あなたが望む形式に入れてDateを使用することができ、標準の一つに、ほぼすべての時間の形式を変換するための最良のツールです。

タイトルにはMySQLの日付が記載されているので、これはmysqlが使用する文字列形式です。

date('Y-m-d h:i:s', strtotime($time));

0

ない限り一部チャー]変化、mysql str_to_date関数を使用し、例えばSTR_TO_DATE('12 | 23 | 2009 '、'%m |%d |%Y ');

0

私は絶対に任意の日付ストレージにTIMESTAMPを使用します。時間差(SELECT ... Where date BETWEEN 2138728753 AND 376251237のような)のような時間差を扱うのは非常に簡単で、ロケールはかなり簡単に翻訳できます:)

+0

私はいつもあなたとagrre。この特定の日付は生年月日です。数字の順序を変更する以外は操作は必要ありません。 –

+0

ああ、そうだね、strtotimeとdate;を使ってやる方が良いよ) –

+0

えええええええええええええええええええええええええええええええば、簡単なローカリゼーションを目指してもタイムスタンプはまだまだ良いと思います。たとえば、東部のいくつかの国ではグレゴリオ暦を使用していません(@en.wikipedia.org/wiki/Calendar#Currently_used_calendars参照)。あなたはまだ "機械可読フォーマット"(Y-m-d程度)に日付を変換し、それを所望のカレンダーに変換する必要があるでしょう... –

関連する問題