UTCを使用するPHPのstrtotimeを強制する

strtotime()は、文字列をunixタイムスタンプに変換するときに、PHP用に設定されたデフォルトのタイムゾーンを使用します。

しかし、文字列をUTCでunixタイムスタンプに変換したい。そのためのパラメータはないので、どうやってこれを行うことができますか?

変換しようとしている文字列は、2011年10月27日20時23分39秒です。これはすでにUTCになっています。私はUTCでunixタイムスタンプとしてそれを表現したいと思います。

ありがとうございました

6
また、 new DateTimeZone( 'UTC'); の使用を検討してください( stackoverflow.com/a/34651091/1066234
追加された 著者 Kai Noack,

2 答え

私はこの質問が非常に古いことを知っていますが、助けになる別の選択肢が見つかりました。 PHPのタイムゾーンを設定して元に戻す代わりに、次のようにstrtotimeに渡す文字列の一部としてタイムゾーンを指定することができます:

echo date_default_timezone_get();
output: America/Chicago

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39'));
output: 2011-10-28 01:23:39

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 America/Chicago'));
output: 2011-10-28 01:23:39

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 UTC'));
output 2011-10-27 20:23:39

注:私はPHP 5.5.9を使用していますが、これはどのPHPバージョンでも動作します。

10
追加された
これは簡単ですが、ユーザーの入力に注意する必要があります。ユーザーが入力したものを送信するだけでは、タイムゾーンや文字列を混乱させるものが含まれるかどうかは決して分かりません。
追加された 著者 Paul Hutchinson,
この回答は、受け入れられた回答よりもはるかに好ましいものです。 +1
追加された 著者 Druckles,

strtotime コールを行う前に、システムのデフォルトタイムゾーンを設定します。

date_default_timezone_set('UTC');
echo strtotime('2011-10-27T20:23:39')."\n";

// Proof:
print_r(getdate(strtotime('2011-10-27T20:23:39')));

// IMPORTANT: It's possible that you will want to
// restore the previous system timezone value here.
// It would need to have been saved with
// date_default_timezone_get().

See it in action.

6
追加された
それはスクリプトの残りの部分で問題を引き起こすでしょうか?私は後でそれを取り戻すことができたと思いますか?
追加された 著者 Brian,
@ブライアン:それは、問題を引き起こす可能性があります。しかし、それを元に戻す限り問題はありません。
追加された 著者 Jon,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com