ちょっと前になりますが、Twitterを見ていたらサマータイムの判定をどうするかという話が出ていました。
鬱陶しいですよね、サマータイム。
私はどんな理由を付けられても時計をずらすことには賛成できません。
時間帯による特性を気にされる方はみなさん独自に対処しておられると思いますので今さらですが、私の判定関数も晒しておきます。
米国式2006年以前や英国式にも対応しています。
英国式はアルパリで使うためだったんですけど(泣)
MQL4
bool IsDST(datetime CurrentTime, bool IsUK){
datetime StartDate;
datetime EndDate;
bool DST;
string CurrentYear = (string)(TimeYear(CurrentTime));
if(!IsUK && (int)CurrentYear >= 2007){
StartDate = (datetime)(CurrentYear + ".3." + (string)(14 - TimeDayOfWeek((datetime)(CurrentYear + ".3.14"))));
EndDate = (datetime)(CurrentYear + ".11." + (string)(7 - TimeDayOfWeek((datetime)(CurrentYear + ".11.7"))));
}else{
if(IsUK){
StartDate = (datetime)(CurrentYear + ".3." + (string)(31 - TimeDayOfWeek((datetime)(CurrentYear + ".3.31"))));
}else{
StartDate = (datetime)(CurrentYear + ".4." + (string)(7 - TimeDayOfWeek((datetime)(CurrentYear + ".4.7"))));
}
EndDate = (datetime)(CurrentYear + ".10." + (string)(31 - TimeDayOfWeek((datetime)(CurrentYear + ".10.31"))));
}
if(CurrentTime >= StartDate && CurrentTime < EndDate) DST = true;
else DST = false;
return(DST);
}