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です。