0

PHP または mysql で、夏季 GMT +02:00 および冬季 GMT +01:00 時刻を正しく処理するのに問題があります。

in php.ini date.timezone = 'ヨーロッパ/プラハ'

このように、php と mysql は同じように動作します ->

そのstrtotime('20120101000000') returns 1325372400 ため、strtotime は現地時間を使用するため、一方、strtotime('20120101000000 UTC')正しい値を返します1325376000

例:ユーザーが2012年1月7日00:30にお金を受け取り、UTCなしでstrtotimeで保存すると....しかし、冬時間にそれを読むと、23:30 30.6.2012が表示されます....私のGMT+時間が変更されたため

そのため、現地時間を UTC として設定し、UTC でのみ動作するようにしています...しかし、システム時間を変更して時間 (GMT +02:00) を追加する必要があることを意味します。

しかし、NTP 同期を停止する必要があります ... GMT +02:00 までの時間を使用する必要があるため

別の優れたソリューションが存在する場合、または NTP 同期を 2 時間増加させる方法を教えてください。

次の問題は、Webサーバーがあなたの時間(2時間増加したのはGMTです...しかしそうではない)と言っているということです

4

1 に答える 1

2

PHP では、関数 date_default_timezone_set http://php.net/manual/en/function.date-default-timezone-set.phpを使用して、スクリプトでタイムゾーンを設定できます。

mysql では、タイムゾーンはデフォルトでコンピューター/サーバーのシステム時間になります。これを変更する方法は次のとおりです。

http://dev.mysql.com/doc/refman//5.5/en/time-zone-support.html

または、mysql を使用すると、次のコマンドを使用してクエリごとに実行できます。

CONVERT_TZ()
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

すべてのデータを 1 つの TZ、できれば夏時間の影響を受けない TZ に変換して、タイムゾーンを処理するのが最善です。GMT または UTC がベスト プラクティスです。クエリ結果は、必要なときに必要な TZ に変換できます。または、Linux のタイムスタンプ (php: time()、strtotime()、Mysql: UNIX_TIMESTAMP) を使用して、必要に応じてそれらの値を人間が読める文字列に変換することもできます。

お役に立てれば。

于 2012-07-04T05:49:16.400 に答える