17

説明させてください: 特定の日時のタイムゾーンをデータベースに格納する適切な方法について質問しているわけではありません。私はタイムゾーン自体について話している。例えば:

「users」という名前の MySQL テーブルがあります。さて、このテーブルには、ユーザーが住んでいる場所のタイムゾーンを含む列が必要です (これはユーザーによって提供され、リストから選択されます)。私は、次のようなタイムゾーン文字列のリストを持つ PHP を使用しています。

アメリカのタイムゾーンのリスト

ここで、(少なくとも私にとっては) 明らかな解決策は、「users」テーブルに VARCHAR 列を作成し、PHP で使用されるタイムゾーン文字列をその列に格納することです。

今考えてみると、私は常に PHP を使用してそのデータベース テーブルと対話することを前提としていますが、現在はそうではありませんが、将来はそうではないかもしれません。そして (間違っていたら訂正してください) PHP のタイムゾーン文字列はおそらく他のプログラミング言語では機能しません。

では、ユーザーのタイムゾーン設定を DB 列に保存するにはどうすればよいでしょうか? どんなアイデアでも大歓迎です。

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

4

1 に答える 1

22

そして (間違っていたら訂正してください) PHP のタイムゾーン文字列はおそらく他のプログラミング言語では機能しません。

わかりました、そうします。:)

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

Microsoft は独自のタイム ゾーン データベースを維持しているため、ネイティブでサポートしていない OS は Microsoft Windows だけです。そのため、.Net などの Windows 中心のプラットフォームでは、そのスタイルのタイムゾーンをサポートする必要がある場合に使用する必要があるライブラリがあります。

詳細については、タイムゾーン タグ wikiまたはウィキペディアを参照してください。

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

于 2013-04-05T03:27:34.667 に答える