EzLunar v1.0

說明

EzLunar 是一個程式單元,此單元提供一組工具函式,讓你可以處理西曆和農曆日期的轉換。

農曆日期的相關資料結構如下:

type
  TLunarDateRec = record
    Year: Integer;        // 年.
    Month: Integer;       // 月.
    Day: Integer;         // 日.
    LeapMonth: Boolean;   // 是否為閏月.
    YearName: string[4];  // 農曆年干支.
    MonthName: string[6]; // 農曆月名(正月,二月....).
    DayName: string[4];   // 農曆日名(初一,初二....).
    Horoscope: string[2]; // 生肖.
  end;

注意事項:

由於西曆換算成農曆時沒有單一公式,必須以查表的方式轉換,因此目前的表格只建到民國  100 年,超過民國 100 年(西元 2011年)就無法進行轉換,但轉換表格可以自行擴充,原始碼中會說明如何自行擴充轉換表格。另外,民國元年二月十八日(1912/2/18)換算成農曆是元年正月初一,所以民國元年 2/18 以前的日期也無法轉成農曆。

使用範例

本產品未提供試用版,您可以先下載範例程式的執行檔觀看轉換的結果。

下載範例程式的執行檔:LunarDemo.zip

以下範例程式碼取自 LunarDemo,您可以透過這些程式碼了解如何使用 EzLunar 單元來進行中西曆轉換:

uses EzLunar;

// 西曆轉農曆
procedure TForm1.btnToLunarClick(Sender: TObject);
var
  LDate: TLunarDateRec;
begin
  LDate := GregorianToLunarDate(DateTimePicker1.Date);
  edLunarYear.Text := IntToStr(LDate.Year);
  edLunarMonth.Text := IntToStr(LDate.Month);
  edLunarDay.Text := IntToStr(LDate.Day);
  lblYearName.Caption := LDate.YearName;
  lblMonthName.Caption := LDate.MonthName;
  if LDate.LeapMonth then
    lblMonthName.Caption := '閏 ' + lblMonthName.Caption;
  chkLeapMonth.Checked := LDate.LeapMonth;  
  lblDayName.Caption := LDate.DayName;
  lblHoroscope.Caption := LDate.Horoscope;
end;

// 農曆轉西曆
procedure TForm1.btnToGregorianClick(Sender: TObject);
var
  LDate: TLunarDateRec;
begin
  LDate.Year := StrToInt(edLunarYear.Text);
  LDate.Month := StrToInt(edLunarMonth.Text);
  LDate.Day := StrToInt(edLunarDay.Text);
  LDate.LeapMonth := chkLeapMonth.Checked;
  DateTimePicker1.Date := LunarToGregorianDate(LDate);
end;

範例程式的執行畫面:

購買

產品售價:300 元。

產品內含程式原始碼以及範例程式,並可享有技術支援服務。

付款方式請點這裡

 

Sep-20-2002