2013-04-05 18 views
14

私に説明しましょう:特定の日時のタイムゾーンをデータベースに格納する適切な方法について質問していません。私はタイムゾーンについて話している。例:データベースにタイムゾーンを格納する適切な方法はありますか?

「users」という名前のMySQLテーブルがあります。今、この表では、ユーザーがどこにいても(ユーザーによって提供され、リストから選択される)どこにでもタイムゾーンを含む列を作成したいと考えています。今、(少なくとも私にとっては)明白な解決策を

List of TimeZones for America

「ユーザ」テーブルにVARCHAR列を作成するには、次のようになります。私は、これらのようなタイムゾーン文字列のリストを持っているPHP、で働いていますその列にPHPが使用するタイムゾーン文字列を格納します。

私はこれについて考えています。これは、PHPを使用してそのデータベーステーブルとやりとりすることを前提としています。そして、もし私が間違っていれば私を修正してください。PHPのタイムゾーン文字列はおそらく他のプログラミング言語では機能しません。おそらく、他の言語にはタイムゾーン処理のための独自の定数があります。

DB列にユーザーのタイムゾーン設定を保存する方法は?すべてのアイデアは確かに評価されます。

注:PHPのタイムゾーンに関する有用な点は、DSTが有効であっても自動的に考慮するということです。これは素晴らしいものです。だから、数値オフセットを格納するのではなく、それらを使うことに興味があることが分かります。

+0

データベースに数値オフセットを格納し、数値オフセットをPHPのタイムゾーン文字列にマップするPHP "config"ファイルを作成できます。 – Passerby

+4

@Passerby - オフセットはタイムゾーンではありません。年間を通してオフセットを変更する多くのタイムゾーンと、同じオフセットを共有する多くの異なるタイムゾーンがあります。 –

+0

@MattJohnsonあなたのプログラムがそれらを言語固有の定数に「翻訳」する方法を知っている限り、任意のフォーマットのオフセットを格納することができます。 -8ゾーン全体に「-8」を格納する代わりに、カリフォルニアには「-8.1」、別の場所には「-8.2」(アメリカ人ではないので、あまり知らない)を保存することができます。 – Passerby

答えて

21

そして(私が間違っているなら、私を修正)PHPのタイムゾーン文字列は、おそらく他のプログラミング言語

[OK]を、私は意志のために動作しません。 :)

PHPはIANA/Olson/TZDB/ZoneInfo database(同じものの名前がたくさんあります)を実装しています。これは業界標準に最も近いものであり、ほぼすべてのプログラミング言語とプラットフォームで実装されています。

Microsoftが独自のタイムゾーンデータベースを管理しているため、それをネイティブにサポートしていない唯一のOSはMicrosoft Windowsです。したがって、.NETのようなWindows中心のプラットフォームでは、そのようなタイムゾーンのスタイルをサポートしたい場合は、librariesが必要です。

timezone tag wikiまたはWikipediaでさらに詳しく説明しています。

はい - タイムゾーンID文字列をvarcharとして保存するだけです。それが最善のことです。

+0

これについて知りませんでした、素晴らしい!私はタイムゾーンの文字列IDをvarcharとして格納しています。どうもありがとう! –

関連する問題