ホームページ  >  記事  >  データベース  >  PHP と MySQL でタイムゾーンを効果的に処理するにはどうすればよいですか?

PHP と MySQL でタイムゾーンを効果的に処理するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-08 03:59:02477ブラウズ

How to Handle Time Zones Effectively in PHP and MySQL?

PHP と MySQL のタイム ゾーン

タイム ゾーン システムを PHP アプリケーションに統合するのは難しい場合がありますが、異なるデータを処理する場合には不可欠です。タイムゾーン。ここでは、最も一般的な問題に対処し、実用的な解決策を提供するための包括的なガイドを示します。

MySQL への日時の保存

  • DATETIME または TIMESTAMP を使用します: DATETIME はより高い精度を提供しますが、TIMESTAMP は秒単位までの精度が重要ではない場合に適しています。
  • UTC で保存: すべての日付時刻が確実に処理されるように、MySQL 接続のタイムゾーンを UTC に設定します。

日時の変換

  • MySQL へ: DateTime を使用して MySQL に保存する前に PHP の日時を UTC に変換します:: setTimezone('UTC').
  • MySQL から: MySQL 値から PHP DateTime オブジェクトを作成し、正しく解釈されるように UTC タイムゾーンを指定します。

夏時間 (DST) の処理

MySQL は DST をネイティブに処理しません。 PHP の DateTimeZone クラスは、ユーザーの場所に基づいて DST を自動的に処理する名前付きタイム ゾーンを提供します。これは、ユーザー向けのタイムスタンプに使用する必要があります。

レガシー データ移行

存在する場合タイムゾーンを考慮せずにデータが挿入された場合は、MySQL の CONVERT_TZ 関数を使用して、選択および更新中にタイムスタンプを修正します。または、UTC に変換してからローカル タイム ゾーンに戻すことでタイムスタンプを更新します。

ユーザー設定のタイム ゾーンの選択

  • オファー名タイムゾーン: DateTimeZone::listIdentifiers() を使用して、名前付きタイムゾーンのリストを取得します。
  • データベースに保存: ユーザーが選択したタイムゾーンをキーまたは識別子として保存します。

コード例

<?php
// Convert PHP datetime to UTC
$utc = new DateTime('now', new DateTimeZone('UTC'));

// Retrieve a list of named time zones
$timezones = DateTimeZone::listIdentifiers();

// Convert to user's time zone (e.g., PST)
$pst = new DateTimeZone('America/Los_Angeles');
$utc->setTimezone($pst);

// Display converted timestamp
echo "UTC: " . $utc->format('Y-m-d H:i:s') . "\n";
echo "PST: " . $utc->format('Y-m-d H:i:s') . "\n";

// Store user's time zone preference
$userTimezone = 'America/Los_Angeles';
$query = "UPDATE users SET timezone = '$userTimezone' WHERE ...";

?>

注: データの不整合を避けるために、タイムスタンプを一貫して保存および変換することが重要です。ユーザーの混乱。これらのガイドラインに従うことで、PHP および MySQL アプリケーションでタイムゾーンを効果的に管理できます。

以上がPHP と MySQL でタイムゾーンを効果的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。