亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lsscalendar.pas

?? 是一個免費并開源的支持農歷的月歷控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
  sy, sm, sd: Word;
begin
  DecodeDate(TheDate, sy, sm, sd);
  if sy < 1900 then exit;
  term:= sTerm(sy, (sm - 1) * 2);  // 當月的節氣日期

  //年柱 1900年立春后為庚子年(60進制36)
  Result.Year:= sy - 1900 + 36;
  //依立春日期調整年柱.立春日固定在公歷2月
  if (sm = 1) or ((sm = 2) and (TheDate < Term)) then
    Result.Year:= sy - 1900 + 35;

  //月柱 農歷1900年1月小寒以前為 丙子月(60進制12)
  Result.Month:= (sy - 1900) * 12 + sm + 11;
  //依節氣調整月柱
  if TheDate >= DateOf(term) then Result.Month:= (sy - 1900) * 12 + sm + 12;

  // 1900/1/1 日柱為甲辰日(60進制10)
  Result.Day:= DaysBetween(EncodeDate(1900,1,1),TheDate) + 10;
end;

// 算出公歷, 傳入農歷日期控件, 返回公歷
function TLssCalendar.ToGreg(objDate: THzDate): TDate;
var
  i, j, t, leap, temp, offset: integer;
  isLeap: Boolean;
  y, m: integer;
begin

  Result:= EncodeDate(1,1,1);
  if not ChkHzDate(objDate) then exit;

  isLeap:= False;
  y:= objDate.Year;
  m:= objDate.Month;
  leap:= leapMonth(y);

  //本年內從大年初一過來的天數
  offset:= 0;
  i:= 1;
  while i < m do
  begin
    if i = leap then
    begin
      if isLeap then
      begin
        temp:= DaysOfleapMonth(y);
        isLeap:= False;
      end
      else begin
        temp:= daysOfmonth(y, i);
        isLeap:= True;
        i:= i - 1;
      end;
    end else
      temp:= daysofmonth(y, i);
    offset:= offset + temp;
    Inc(i);
  end;

  offset:= offset + objDate.Day - 1;
  if (m = leap) and objDate.isLeap then  //若為閏月,再加上前一個非閏月天數
    offset:= offset + DaysOfMonth(y, m);

  // 該年到 2000.1.1 這幾年的天數
  if y > 2000 then
  begin
    i:= 2000;
    j:= y - 1;
  end
  else begin
    i:= y;
    j:= 1999;
  end;

  temp:= 0;
  for t:= i to j do
  begin
    temp:= temp + DaysOfLunarYear(t);
  end;

  if y > 1999 then offset:= offset + temp
  else offset:= offset - temp;

  //農歷二零零零年大年初一的陽歷為 2000.2.5
  Result:= incDay(EncodeDate(2000,2,5),offset);
end;

// 檢查農歷日期是否合法
function TLssCalendar.ChkHzDate(objDate: THzDate): Boolean;
begin
  if (objDate.Year > 2099) or (objDate.Year < 1901)
    or (objDate.Month > 12) or (objDate.Day > 30) then
  begin
    Result:= False;
    exit;
  end;

  Result:= True;
  if objDate.isLeap then
  begin
    if leapMonth(objDate.Year) = objDate.Month then
    begin
      if DaysOfleapMonth(objDate.Year) < objDate.Day then
        Result:= False;
    end else Result:= False;
  end else
  begin
    if DaysOfMonth(objDate.Year,objDate.Month) < objDate.Day then
      Result:= False;
  end;
end;

// 某年的第n個節氣為幾日(從0小寒起算)
function TLssCalendar.sTerm(y, n: integer): TDateTime;
var
  temp: TDateTime;
  t: real;
  i: Int64;
begin
  t:= sTermInfo[n];
  t:= t * 60000;
  t:= t + 31556925974.7 * (y - 1900);
  i:= Round(t);
  Temp:= IncMilliSecond(EncodeDateTime(1900,1,6,2,5,0,0),i);
  Result:= temp;
end;

//傳入干支y年,返回生肖
function TLssCalendar.GetAnimal(y: integer): string;
begin
  Result := Animals[y mod 12];
end;

// 傳入 offset 返回干支, 0=甲子
function TLssCalendar.cyclical(num: integer): string;
begin
   Result:= Gan[num mod 10] + Zhi[num mod 12];
end;

function TLssCalendar.FormatLunarDay(day:integer): string;
begin
  case day of
    1..10: Result:= nStr2[0] + nStr1[day];
    11..19: Result:= nStr2[1] + nStr1[day - 10];
    20: Result:= nStr1[2] + nStr1[10];
    21..29: Result:= nStr2[2] + nStr1[day - 20];
    30: Result:= nStr1[3] + nStr1[10];
    else Result :='';
  end;
end;

function TLssCalendar.FormatLunarMonth(month:integer;isLeap:boolean): string;
begin
  case month of
    1: Result:= '正';
    2..10: Result:= nStr1[month];
    11: Result:= nStr1[10] + nStr1[month - 10]; //Result:= '冬';
    12: Result:= '臘';
    //11..12: Result:= nStr1[10] + nStr1[month - 10];
    else result :='';
  end;
  if isLeap then Result:= '閏' + Result;
  Result:= Result + '月';
end;

function TLssCalendar.FormatLunarYear(year:integer): string;
var
  temp: integer;
  zero: string;
begin
  zero:= '零';

  temp:= year div 1000;
  Result:= nStr1[temp];
  year:= year - temp * 1000;

  if year >= 100 then
  begin
    temp:= year div 100;
    Result:= Result + nStr1[temp];
    year:= year - temp * 100;
  end
  else
    Result:= Result + zero;

  if year >= 10 then
  begin
    temp:= year div 10;
    Result:= Result + nStr1[temp];
    year:= year - temp * 10;
  end
  else
  Result:= Result + zero;

  if year = 0 then Result:= Result + zero else
    Result:= Result + nStr1[year];
  Result:= Result + '年';
end;

//漢字星期幾
function TLssCalendar.FormatWeekDay(WeekDay:integer): string;
begin
  Result := '星期' + nStr1[WeekDay mod 7];
end;

// 取得指定日期的節氣
function TLssCalendar.GetJQ(TheDate: TDate): string;
var
  jq: Integer;
  term: TDateTime;
begin
  Result:= '';
  jq:= (MonthOf(TheDate) - 1) * 2;
  term:= sTerm(Yearof(TheDate), jq);     //節氣時間
  if DateOf(term) = TheDate then Result:= solarTerm[jq]
  else
  begin
    term:= sTerm(Yearof(TheDate), jq + 1); //中氣時間
    if DateOf(term) = TheDate then Result:= solarTerm[jq+1];
  end;
end;

//取得當日的節日
function TLssCalendar.GetFtv(TheDate: TDate): string;
var
  TempColor: TColor;
begin
  Result := GetFtv(TheDate, TempColor);
end;

//取得當日的節日
function TLssCalendar.GetFtv(TheDate: TDate; var fcolor: TColor): string;
var
  HzDate, HzDate2: THzDate;
  TempColor: TColor;
  TempStr: string;
begin
  Result := '';
  TempStr := '';
  fcolor := -1;

  HzDate := ToLunar(TheDate);
  HzDate2 := ToLunar(TheDate + 1);
  if HzDate.Month <> HzDate2.Month then   //針對"0100"除夕
  begin
    HzDate2.Day := 0;
    TempStr := FFtvList.GetLunarFtv(HzDate2, TempColor);
  end;

  if TempStr <> '' then
  begin
    fcolor := TempColor;
    Result := TempStr;
  end;
  
  TempStr := FFtvList.GetLunarFtv(HzDate, TempColor);
  if (TempStr <> '') then
  begin
    if fcolor = -1 then fcolor := TempColor;
    Result := Trim(Result + ' ' + TempStr);
  end;

  TempStr := FFtvList.GetSolarFtv(TheDate, TempColor);
  if (TempStr <> '') then
  begin
    if fcolor = -1 then fcolor := TempColor;
    Result := Trim(Result + ' ' + TempStr);
  end;

  TempStr := FFtvList.GetWeekFtv(TheDate, TempColor);
  if (TempStr <> '') then
  begin
    if fcolor = -1 then fcolor := TempColor;
    Result := Trim(Result + ' ' + TempStr);
  end;
end;

//取得當日的標記
function TLssCalendar.GetMark(TheDate: TDate): TColor;
var
  HzDate: THzDate;
begin
  HzDate := ToLunar(TheDate);
  Result := FFtvList.GetLunarMark(HzDate);
  if Result > -1 then Exit;
  Result := FFtvList.GetSolarMark(TheDate);
  if Result > -1 then Exit;
  Result := FFtvList.GetWeekMark(TheDate);
end;

{
//存儲星座配信息
1白羊座: 03月21日-------04月19日  Aries
2金牛座: 04月20日-------05月20日  Taurus
3雙子座: 05月21日-------06月21日  Gemini
4巨蟹座: 06月22日-------07月22日  Cancer
5獅子座: 07月23日-------08月22日  Leo
6處女座: 08月23日-------09月22日  Virgo
7天秤座: 09月23日-------10月23日  Libra
8天蝎座: 10月24日-------11月21日  Scorpio
9射手座: 11月22日-------12月21日  Sagittarius
10摩羯座: 12月22日-------01月19日  Capricorn
11水瓶座: 01月20日-------02月18日  Aquarius
12雙魚座: 02月19日-------03月20日  Pisces
}
//根據公歷日期,返回星座
Function TLssCalendar.Constellation(TheDate: TDate): String;
var
  y, m, d: Word;
Begin
  DecodeDate(TheDate, y, m, d);
  Case m Of
    1:
      Begin
        If d < 20 Then result := '摩羯座';
        If d >= 20 Then result := '水瓶座';
      End;
    2:
      Begin
        If d < 19 Then result := '水瓶座';
        If d >= 19 Then result := '雙魚座';
      End;
    3:
      Begin
        If d < 21 Then result := '雙魚座';
        If d >= 21 Then result := '白羊座';
      End;
    4:
      Begin
        If d < 20 Then result := '白羊座';
        If d >= 20 Then result := '金牛座';
      End;
    5:
      Begin
        If d < 21 Then result := '金牛座';
        If d >= 21 Then result := '雙子座';
      End;
    6:
      Begin
        If d < 22 Then result := '雙子座';
        If d >= 22 Then result := '巨蟹座';
      End;
    7:
      Begin
        If d < 23 Then result := '巨蟹座';
        If d >= 23 Then result := '獅子座';
      End;
    8:
      Begin
        If d < 23 Then result := '獅子座';
        If d >= 23 Then result := '處女座';
      End;
    9:
      Begin
        If d < 23 Then result := '處女座';
        If d >= 23 Then result := '天秤座';
      End;
    10:
      Begin
        If d < 24 Then result := '天秤座';
        If d >= 24 Then result := '天蝎座';
      End;
    11:
      Begin
        If d < 22 Then result := '天蝎座';
        If d >= 22 Then result := '射手座';
      End;
    12:
      Begin
        If d < 22 Then result := '射手座';
        If d >= 22 Then result := '摩羯座';
      End;
  End;
End;

//返回當日所在周數
function TLssCalendar.WeekOfYear(TheDate: TDate): integer;
var
  TempDate: TDate;
begin
  Result := WeekOfTheYear(TheDate);    //ISO8601 standard compliant 

  if FUseISO8601 then Exit;

    //由于WeekOfTheYear() 使用ISO 8601標準,每周為星期一到星期天.
    //現根據日歷顯示,調整為從星期天到星期六為一周
    if (Result > 50) and (MonthOf(TheDate) = 1) then
    begin
      Result := 1;
      if (DayOfTheWeek(TheDate) = 7) and (FormatDateTime('mm-dd',TheDate) <> '01-01') then
        inc(Result);
      exit;
    end;

    TempDate := EncodeDate(YearOf(TheDate), 1, 1);
    if (WeekOfTheYear(TempDate) > 50) and (DayOf

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久福利视频一区二区| 欧美日韩精品是欧美日韩精品| 色天使久久综合网天天| 日韩欧美一级在线播放| 亚洲欧美偷拍另类a∨色屁股| 青椒成人免费视频| 色婷婷综合久久久久中文一区二区 | 亚洲线精品一区二区三区八戒| 精品一区二区三区在线播放| 在线视频观看一区| 亚洲欧洲色图综合| 国产福利一区二区| 欧美第一区第二区| 日韩激情一二三区| 色94色欧美sute亚洲线路二 | 国产精品国产三级国产普通话99 | 成人av动漫在线| 日韩精品最新网址| 日韩影院在线观看| 欧美日韩精品一区二区在线播放| 国产精品高清亚洲| 成人免费高清在线| 国产午夜亚洲精品午夜鲁丝片| 美女脱光内衣内裤视频久久影院| 欧美高清视频www夜色资源网| 日韩毛片高清在线播放| 国产成人精品aa毛片| 久久久久久久久久久久电影 | 国内精品伊人久久久久av影院| 欧美精品第一页| 午夜国产不卡在线观看视频| 欧美体内she精高潮| 亚洲国产精品久久不卡毛片| 欧美丝袜丝nylons| 午夜精品久久久久| 宅男噜噜噜66一区二区66| 三级在线观看一区二区| 日韩精品专区在线影院重磅| 日本网站在线观看一区二区三区 | 欧美怡红院视频| 亚洲影视资源网| 欧美精选一区二区| 麻豆一区二区在线| 久久综合久久综合久久综合| 成人午夜在线播放| 日韩毛片在线免费观看| 欧美三级中文字| 久久精品国产在热久久| 久久久久久久精| 成人的网站免费观看| 国产精品福利av| 欧美日韩在线不卡| 久久精品国产色蜜蜜麻豆| 久久精品在这里| www.激情成人| 偷偷要91色婷婷| 国产精品久久久久影院老司| av午夜一区麻豆| 亚洲mv在线观看| 久久噜噜亚洲综合| 91麻豆福利精品推荐| 日韩精品一级二级| 中文字幕免费不卡在线| 色香蕉久久蜜桃| 久久精品国产一区二区| 亚洲欧美另类小说视频| 欧美一级夜夜爽| av午夜一区麻豆| 日韩在线一区二区三区| 国产精品麻豆久久久| 欧美久久久久久久久| 成人h版在线观看| 日韩福利电影在线观看| 国产区在线观看成人精品| 欧美日韩久久久| 91在线丨porny丨国产| 免费看欧美女人艹b| 亚洲码国产岛国毛片在线| 精品精品国产高清一毛片一天堂| 色综合久久88色综合天天 | 久久婷婷综合激情| 欧美少妇性性性| 成人一区在线观看| 麻豆久久一区二区| 亚洲综合在线观看视频| 国产亚洲精品7777| 欧美一区午夜精品| 欧美亚洲动漫另类| 成人app在线| 国产精品亚洲一区二区三区妖精| 亚洲成人一区二区| 亚洲激情自拍偷拍| 国产精品情趣视频| 久久久综合激的五月天| 欧美一区二区三区日韩| 欧美优质美女网站| 99re这里只有精品6| 国产不卡免费视频| 国产精品白丝jk黑袜喷水| 日本网站在线观看一区二区三区 | 欧美日韩中文字幕精品| 一本色道久久综合亚洲91| 成人性生交大合| 国产福利不卡视频| 国产一区二区免费视频| 久久成人免费日本黄色| 视频一区在线视频| 亚洲成av人影院在线观看网| 亚洲一区二区三区视频在线播放| 国产精品乱码久久久久久| 国产女人水真多18毛片18精品视频| 精品国产制服丝袜高跟| 精品国产免费人成电影在线观看四季| 91精品在线免费观看| 欧美精选一区二区| 欧美一级理论片| 精品国产伦一区二区三区免费| 精品国产污网站| 国产亚洲成aⅴ人片在线观看| 久久久久久久久久电影| 中文字幕国产一区二区| 中文字幕五月欧美| 亚洲一区二区不卡免费| 日韩精品电影一区亚洲| 老司机精品视频导航| 国产剧情一区在线| 成人免费高清在线观看| 日本韩国一区二区三区| 欧美日韩在线三级| 欧美大片拔萝卜| 久久久国产午夜精品| 国产精品久久久久婷婷二区次| 亚洲欧洲三级电影| 香蕉影视欧美成人| 精品在线播放免费| av一区二区不卡| 欧美色成人综合| 欧美精品一区二区久久久| 欧美国产日韩亚洲一区| 亚洲综合免费观看高清完整版在线 | 亚洲同性gay激情无套| 亚洲第一搞黄网站| 久久99国产精品免费| 波多野结衣欧美| 69成人精品免费视频| 久久久久久黄色| 亚洲一区二区三区小说| 狠狠色丁香久久婷婷综合丁香| 99久久精品免费| 777欧美精品| 中文字幕一区二区在线观看| 午夜精品久久一牛影视| 福利一区二区在线观看| 欧美精品成人一区二区三区四区| 久久无码av三级| 一区二区三区免费网站| 狠狠色丁香久久婷婷综合_中| 91视频www| 国产日韩三级在线| 天堂在线一区二区| 99视频在线观看一区三区| 日韩欧美中文一区二区| 亚洲欧美aⅴ...| 国产成人精品免费一区二区| 欧美日韩国产精品自在自线| 国产精品乱码久久久久久| 秋霞国产午夜精品免费视频| 一本到三区不卡视频| 久久久www免费人成精品| 日本不卡1234视频| 欧美性猛片xxxx免费看久爱| 国产欧美精品一区二区三区四区| 日韩精品一级中文字幕精品视频免费观看 | 国产成人一区二区精品非洲| 欧美老女人在线| 亚洲激情校园春色| 成人av电影观看| 久久久亚洲午夜电影| 日韩av一区二区在线影视| 91成人在线免费观看| 亚洲欧美在线另类| 成人午夜激情视频| 久久精品一二三| 韩国女主播一区二区三区| 日韩一区二区在线观看| 成人一区二区三区视频在线观看 | 久久久精品免费观看| 日韩成人午夜电影| 欧美日韩欧美一区二区| 亚洲激情网站免费观看| 一本到一区二区三区| 亚洲免费观看高清完整版在线| 懂色av一区二区三区蜜臀| 久久精品免视看| 国产精品69久久久久水密桃| 久久久久久久综合| 国产不卡视频在线播放| 国产精品区一区二区三| heyzo一本久久综合| 国产精品久久久久三级|