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

解決


gaya  2008-10-31 03:58:13  No: 32430

ニューヨーク時間を得る関数を作っています。
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-31 04:36:54  No: 32431

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


gaya  2008-10-31 04:51:39  No: 32432

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加