質問: ローカルのタイムゾーンではなく UTC での `Date.today` が知りたいのですが、Date クラスのみからの操作で知ることはできますか? Time クラスを使えば `Time.now.utc.to_date` と取得できることは分かったのですが、Date クラスを使って取得することはできないのでしょうか。
回答: この回答を読んで解決しました: Date はタイムゾーンを変えることを意識しておらず、常にローカル時刻を参照します。タイムゾーンを指定したい場合は Time を使います:`Time.now.utc.to_date`。 もう少し詳しく見てみましょう。`Date.today` の実装は次のようになっています。 ``` time_t t; struct tm tm; // ... if (time(&t) == -1) rb_sys_fail("time"); tzset(); if (!localtime_r(&t, &tm)) rb_sys_fail("localtime"); ``` このあと `tm` が Date を作るのに使われます。上のコードのように `localtime()` が `tm` を作るのに使われているため、Date が返すのはローカル時間になります。