サーバーのタイムゾーンを BST (英国の夏時間) に設定しており、関数に渡される日付は UTC で計算されています。
Java オラクルのサイトでは単純に「今」と時間を比べているのですが、この「今」の時間は設定と同じタイムゾーンなのですか、それとも稼働しているサーバーに設定されている時間なのですか?
サーバーのタイムゾーンを BST (英国の夏時間) に設定しており、関数に渡される日付は UTC で計算されています。
Java オラクルのサイトでは単純に「今」と時間を比べているのですが、この「今」の時間は設定と同じタイムゾーンなのですか、それとも稼働しているサーバーに設定されている時間なのですか?
にはタイムゾーンはありませんjava.util.Date
。実際には、実行中の JVM のタイムゾーンです。
私のアドバイスは、タイムゾーンを使用する必要がある場合は、Joda を使用することです
java.util.Date
常に UTC で時刻を保存することを意味します。たとえば、 を呼び出すSystem.currentTimeMillis()
か作成するnew Date()
と、内部時間は UTC になります。ただしDate.toString()
、異なるデフォルトのタイムゾーンに対して異なる時間を提供します。
したがって、UTC 日付をbefore
関数に渡すと、サーバーのタイム ゾーンに関係なく正しい結果が得られます。