私はphpとmysqlまたはpgsqlでほとんどの時間を費やしていますので、Date APIの一般的な単語としてDateTimeを使用します。 phpには、 "Date"、 "Time"、 "DateTime"、 "DateTimeOffset"はありません。タイムスタンプよりDateTimeをいつ選択するのですか
Webアプリケーションを開発するにあたって、私はもっと丁寧にDateTimeを使いますが、私が望むもの たとえば、今日の日付を表示したいとき(フォーラムやブログの投稿を保存したいときなど)、計算はありません。フィルタは提供されず、繰り返しは発生しません。なぜ私はdate()
機能より\DateTime
を使用しますか?
私はthis topicを見て、それぞれの技術の賛否両論を簡単に説明しています。
しかし、それは本当に質問に答えません。それは私がDATE_INTERVAL
API(PHPでそれはDateInterval
)とIntlDateFormatterを使用することができますので、PHPのDateTimeオブジェクトとデータベースの他の2バイトに2バイトを追加することは本当に損失ですか?
また、この記事はUNIX_TIMESTAMPは1970年から予約されている。しかし、それは論理的ではなく、いくつかのテストは、それを証明することを言う:
echo date('d/m/Y',time(-1));
エコー/ 1969' 分の12 '31!それは論理的です。 32ビットの符号なしintは0から4 294 967 295
になり、68年で約20億分の1秒しかないので、intには符号が付けられ、 "negative timestamp"が存在しなければなりません!
もう1つは本当に大事なことだと思うので、毎回DateTimeを選択するようになりました。なぜなら、整数ではなく日付を扱いたいからです。 DateTimeは日付、タイムスタンプはありません!私がタイムスタンプを見つけた唯一の感覚は、そのcasタイムスタンプがタイムスタンプ...
であるため、ファイル名のタイムマークを付ける時間でした。 のDateTimeとして日付を格納するときにMySQLと他の人がタイムゾーンに対応していないため、今のところ、私は「エスケープにフィルタアウト」のエスケープ一環として、タイムゾーンの統合を使用
$toStoreDate = new \DateTime($_POST['date'],new DateTimeZone('UTC'));
$dao->exec('INSERT INTO mytable(mydate) VALUES (\''.$toStoreDate->format('Y-m-d h:i:s').'\')');
$toDisplayDate =new \DateTime($dao->query('SELECT mydate FROM mytable')
->fetch(DAO::FETCH_ASSOC)['mydate']);
$toDisplayDate->setTimeZone(new DateTimeZone('myLocal'));
それが正しい方法ですか?シンプルなタイムスタンプを保存してからローカルタイムを取得する方が良いでしょうか?
だから、ここの質問のまとめたものです:
- は日時の2つの以上のバイトは、APIの本当に簡単な使用(のみ表示)
- の損失ですが、それは時間でありますunix_timestampをあきらめますか?
- シンプルなタイムスタンプを保存してからローカルタイムを取得する方が良いでしょうか?
おそらく無関係ですが、 'date()'は2038年までしか動作しません。その年、 'date()'はおそらく非推奨になります;-) –
2038年の64ビットシステムでも標準ですか?もしそうでなければ、unixタイムスタンプ仕様をintからlong intに移行する際の問題は何ですか? – artragis
確かに。 Javascriptは、1970年1月1日からミリ秒を使って時間を測定します。私の推測では、unixのタイムスタンプはここにあります^^ – Johan