ニューヨーク時間を得るには?

解決


gaya  2008-10-30 18:58:13  No: 32430  IP: 192.*.*.*

ニューヨーク時間を得る関数を作っています。
3月の第2日曜日、11月の第1日曜日を得るエレガントな方法はありますか?


//ニューヨーク時間(夏時間:3月第2日曜午前2時〜11月第1日曜午前2時)
function TForm1.NYtime(jpnT: TDateTime): string;
var intNum,j:integer;
    date1st,dateInit,dateTerm:Tdatetime;
begin
  date1st:=encodedatetime(Yearof(jpnT),Monthof(jpnT),1,0,0,0,0);//月の初日
  intNum:=dayoftheweek(date1st);//月の初日の曜日(0..6)
  
  j:=15-intNum; if j=15 then j:=8;
  dateInit:=encodedatetime(Yearof(jpnT), 3,j,2,0,0,0);//3月の第2日曜日午前2時
  
  j:=8-intNum ; if j=8  then j:=1;
  dateTerm:=encodedatetime(Yearof(jpnT),11,j,2,0,0,0);//11月の第1日曜日午前2時
  
  if (jpnT>dateInit) or (jpnT<dateTerm) then 
    result:=datetimetostr(inchour(jpnT,-14))
  else 
    result:=datetimetostr(inchour(jpnT,-13))
end;

編集 削除
長い名  2008-10-30 19:36:54  No: 32431  IP: 192.*.*.*

ざっとヘルプを見たところだとEncodeDayOfWeekInMonthというのがあるようです。
参考までに、月の初日のDate値はStartOfAMonthとかStartOfTheMonthでも取れます。

編集 削除
gaya  2008-10-30 19:51:39  No: 32432  IP: 192.*.*.*

EncodeDayOfWeekInMonthで即でした。
長い名様、ありがとうございました。

編集 削除