0

time()トピックが投稿された時間を記録するために使用するアプリケーションがあります。私はこれを長い間行ってきましたが、この方法で発生した唯一の不具合は、時間が常に1時間ずれていたことです(主に、私が調べたことのないDSTの問題です)。

DateTimeタイムゾーンを設定するときにその日付形式を使用するTwigにも切り替えるので、メソッドに切り替えたいと思います。

しかし、私が見る限り、タイムスタンプを使用して日付を解析することはできません。私の質問は、どのように日付を入力して解析し、そうでない場合はどのような形式を探しているのtime()ですか?

4

2 に答える 2

0

タイムスタンプを使用して日付を解析することはできません

PHP のバージョンが >=5.3 の場合、次の方法があります。

$time = time();//or other time
$date = DateTime::createFromFormat('U',$time);

しかし実際のところ、DateTime はタイムスタンプに依存していないため、タイムスタンプを使用するのはやや奇妙です。日付が英語または「フランス語」(つまり) の場合は、datetime コンストラクターを使用して日付文字列を直接解析できますd/m/y。カスタム形式を作成することもできます。

日付を入力して解析する方法と、time() でない場合に探している形式

標準形式の日付の場合:

$date = new DateTime($yourString);//would throw an exception if the format is wrong

DD/MM/YYYY 14h32mins のようなカスタム形式の場合

$date = DateTime::createFromFormat('d/m/Y h\hi\m\i\n\s',$yourString);
if($date === false){//if format does not fit
   exit('Your wrong !');
}

time() を使用してトピックが投稿された時間を記録するアプリケーションがあります。

非常に悪い習慣。MySQL には DateTime 形式があり (各リレーショナル データベース システムには独自の同等物があります)、日付時刻を格納します。PHP の DateTime コンストラクターと完全に互換性があるため、それに移行します (FROM_TIMESTAMP を使用して DateTime に変更します)。

于 2012-12-15T19:16:28.940 に答える
0

サーバーのデフォルトのタイムゾーンは UTC です。DST を適用するdefault_timezone設定に変更することをお勧めします。php.iniこれは、 を使用するdate()と、結果の出力が DST に合わせて正しく調整されることを意味します。

于 2011-09-29T00:25:35.597 に答える