0

PHP で日付と時刻 (GMT) をタイムスタンプに変換する必要があります。次のコードは、私が現在使用しているものを示しています。

<?php
$date="2012-06-29 10:50";
$timestamp = strtotime($date);
echo $timestamp;
?>

ただし、オンライン コンバーター (http://www.epochconverter.com) でタイムスタンプをテストすると、結果の日付は 2012 年 6 月 29 日 8:50 GMT、つまり 2 時間前になります。strtotime() 関数が完全に正確ではなく、単なる推定時間である可能性はありますか? もしそうなら、正確な時間を取得するために使用できるより良い方法はありますか?

ありがとう。

4

1 に答える 1

0

strtotimeサーバーの現地時間で文字列を変換していると想定しているため、サーバーのタイムゾーンが2時間ずれている場合、結果は同じになります.

マニュアルのコメントは、いくつかの解決策を提案しています。UTC を日付に追加できます。

$timestamp = strtotime($date.' UTC');

または、スクリプトのデフォルトのタイムゾーンを変更できます (これは他のすべての時間関数に適用されます!):

date_default_timezone_set('UTC');
$timestamp = strtotime($date);

最後の代替手段として、date_create_from_format文字列の正確な形式を指定できるものを試すことができます。

$datetime = date_create_from_format('Y-m-d H:i', $date, new DateTimeZone('UTC'));

$timestamp = date_format($datetime, 'U');
// Alternatively (thanks Herbert) - 5.3+ only
$timestamp = date_timestamp_get($datetime);
于 2012-06-28T03:28:20.240 に答える