Emacsは、標準時とサマータイムの違いを理解します。日の出、日の入り、夏至、冬至、春分、秋分、月の位相では、時刻を補正しています。サマータイムのルールは、場所によりさまざまで、歴史的にも異なります。処理を正しく行なうには、Emacsが使用するルールを知る必要があります。
どこにいるかにより適用されるルールを、追跡するオペレーティングシステムもあります。そのようなシステムでは、Emacsはそのシステムから必要な情報を取得します。これらの情報の一部またはすべてが欠落している場合、Emacsは現在マサチューセッツのケンブリッジで使用されているルールで、そのギャップを埋めます。その結果としてのルールが望むものでない場合、変数calendar-daylight-savings-starts
およびcalendar-daylight-savings-ends
をセットすることにより、Emacsに使用するルールを指定できます。
これらの値は、変数year
を参照するLisp式で、サマータイムが開始または終了される、(month
day
year)
という形式のリストによる、グレゴリオ暦の日付として評価されます。その地域がサマータイムを使用しない場合、値はnil
であるべきです。
Emacsは、サマータイムの開始を決定するためにこれらの式を使い、休日リスト、太陽および月に関する時刻の補正を行ないます。
マサチューセッツのケンブリッジにたいする値は、以下のとおりです:
(calendar-nth-named-day 2 0 3 year) (calendar-nth-named-day 1 0 11 year)
つまり、year
で指定される年の、3番目の月(3月)の、第2週の0番目の曜日(日曜日)と、、その年の11番目の月(11月)の、第1週の日曜日です。サマータイムが10月1日から開始されるように変更する場合、calendar-daylight-savings-starts
を以下のように変更します:
(list 10 1 year)
その地域でサマータイムがない、またはすべての時刻を標準時にしたい場合は、calendar-daylight-savings-starts
とcalendar-daylight-savings-ends
を、nil
にセットします。
変数calendar-daylight-time-offset
は、サマータイムと標準時の差を、分で指定します。マサチューセッツのケンブリッジでは60です。
最後に、2つの変数calendar-daylight-savings-starts-time
とcalendar-daylight-savings-ends-time
は、サマータイムの開始と終了の遷移時に、地方時の真夜中から何分ずれるかを指定します。マサチューセッツのケンブリッジでは、変数の値は両方とも120です。