⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datecn.pas

📁 一款不错的年历控件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit DateCn;

interface

uses Windows, SysUtils, Controls;

const
  //农历月份数据,每年4字节,从1901年开始,共150年
  //数据来源:UCDOS 6.0 UCT.COM
  //分析整理:Copyright (c) 1996-1998, Randolph
  //数据解析:
  //如果第一字节的bit7为1,则该年1月1日位于农历12月,否则位于11月
  //第一字节去除bit7为该年1月1日的农历日期
  //         第二字节                 第三字节
  //bit:     7  6  5  4  3  2  1  0   7  6  5  4  3  2  1  0
  //农历月份:16 15 14 13 12 11 10 9   8  7  6  5  4  3  2  1
  //农历月份指的是从该年1月1日的农历月份算起的顺序号
  //农历月份对应的bit为1则该月为30日,否则为29日
  //第四字节为闰月月份

  START_YEAR=1901;
  END_YEAR=2050;


type
   TCyclical = (wqYear,wqMonth, wqDay, wqHour);

function DaysOnRange(AYear1,AMonth1,AYear2,AMonth2 : Integer):Integer;

function DaysNumberOfDate(ADate: TDate): Integer;
//日期是该年的第几天,1月1日为第一天

function CnYearOfDate(ADate : TDate):Integer; //指定日期的农历年

function CnMonthOfDate(ADate: TDate): Integer; //指定日期的农历月
function CnMonthOfDateCH(ADate: TDate): string; //指定日期的农历月名称

function CnDayOfDate(ADate: TDate): Integer; //指定日期的农历日
function CnDayOfDateCH(ADate: TDate): string; //指定日期的农历日名称

function GetAnimals(AYear : Integer):string; //指定年的生肖

function GetLunarHolDay(ADate: TDate): string; //指定日期的农历节日
function GetSolarTerm(ADate:TDateTime):string;  //指定日期的农历节气

function GetSunHolDay(ADate:TDate):string;

function GetCyclical(ADate :TDateTime;ACyclical : TCyclical):String; //指定日期的柱

implementation

const
  CnData: array[0..599] of Byte = (
    $0B, $52, $BA, $00, $16, $A9, $5D, $00, $83, $A9, $37, $05, $0E, $74, $9B,
    $00,
    $1A, $B6, $55, $00, $87, $B5, $55, $04, $11, $55, $AA, $00, $1C, $A6, $B5,
    $00,
    $8A, $A5, $75, $02, $14, $52, $BA, $00, $81, $52, $6E, $06, $0D, $E9, $37,
    $00,
    $18, $74, $97, $00, $86, $EA, $96, $05, $10, $6D, $55, $00, $1A, $35, $AA,
    $00,
    $88, $4B, $6A, $02, $13, $A5, $6D, $00, $1E, $D2, $6E, $07, $0B, $D2, $5E,
    $00,
    $17, $E9, $2E, $00, $84, $D9, $2D, $05, $0F, $DA, $95, $00, $19, $5B, $52,
    $00,
    $87, $56, $D4, $04, $11, $4A, $DA, $00, $1C, $A5, $5D, $00, $89, $A4, $BD,
    $02,
    $15, $D2, $5D, $00, $82, $B2, $5B, $06, $0D, $B5, $2B, $00, $18, $BA, $95,
    $00,
    $86, $B6, $A5, $05, $10, $56, $B4, $00, $1A, $4A, $DA, $00, $87, $49, $BA,
    $03,
    $13, $A4, $BB, $00, $1E, $B2, $5B, $07, $0B, $72, $57, $00, $16, $75, $2B,
    $00,
    $84, $6D, $2A, $06, $0F, $AD, $55, $00, $19, $55, $AA, $00, $86, $55, $6C,
    $04,
    $12, $C9, $76, $00, $1C, $64, $B7, $00, $8A, $E4, $AE, $02, $15, $EA, $56,
    $00,
    $83, $DA, $55, $07, $0D, $5B, $2A, $00, $18, $AD, $55, $00, $85, $AA, $D5,
    $05,
    $10, $53, $6A, $00, $1B, $A9, $6D, $00, $88, $A9, $5D, $03, $13, $D4, $AE,
    $00,
    $81, $D4, $AB, $08, $0C, $BA, $55, $00, $16, $5A, $AA, $00, $83, $56, $AA,
    $06,
    $0F, $AA, $D5, $00, $19, $52, $DA, $00, $86, $52, $BA, $04, $11, $A9, $5D,
    $00,
    $1D, $D4, $9B, $00, $8A, $74, $9B, $03, $15, $B6, $55, $00, $82, $AD, $55,
    $07,
    $0D, $55, $AA, $00, $18, $A5, $B5, $00, $85, $A5, $75, $05, $0F, $52, $B6,
    $00,
    $1B, $69, $37, $00, $89, $E9, $37, $04, $13, $74, $97, $00, $81, $EA, $96,
    $08,
    $0C, $6D, $52, $00, $16, $2D, $AA, $00, $83, $4B, $6A, $06, $0E, $A5, $6D,
    $00,
    $1A, $D2, $6E, $00, $87, $D2, $5E, $04, $12, $E9, $2E, $00, $1D, $EC, $96,
    $0A,
    $0B, $DA, $95, $00, $15, $5B, $52, $00, $82, $56, $D2, $06, $0C, $2A, $DA,
    $00,
    $18, $A4, $DD, $00, $85, $A4, $BD, $05, $10, $D2, $5D, $00, $1B, $D9, $2D,
    $00,
    $89, $B5, $2B, $03, $14, $BA, $95, $00, $81, $B5, $95, $08, $0B, $56, $B2,
    $00,
    $16, $2A, $DA, $00, $83, $49, $B6, $05, $0E, $64, $BB, $00, $19, $B2, $5B,
    $00,
    $87, $6A, $57, $04, $12, $75, $2B, $00, $1D, $B6, $95, $00, $8A, $AD, $55,
    $02,
    $15, $55, $AA, $00, $82, $55, $6C, $07, $0D, $C9, $76, $00, $17, $64, $B7,
    $00,
    $86, $E4, $AE, $05, $11, $EA, $56, $00, $1B, $6D, $2A, $00, $88, $5A, $AA,
    $04,
    $14, $AD, $55, $00, $81, $AA, $D5, $09, $0B, $52, $EA, $00, $16, $A9, $6D,
    $00,
    $84, $A9, $5D, $06, $0F, $D4, $AE, $00, $1A, $EA, $4D, $00, $87, $BA, $55,
    $04,
    $12, $5A, $AA, $00, $1D, $AB, $55, $00, $8A, $A6, $D5, $02, $14, $52, $DA,
    $00,
    $82, $52, $BA, $06, $0D, $A9, $3B, $00, $18, $B4, $9B, $00, $85, $74, $9B,
    $05,
    $11, $B5, $4D, $00, $1C, $D6, $A9, $00, $88, $35, $AA, $03, $13, $A5, $B5,
    $00,
    $81, $A5, $75, $0B, $0B, $52, $B6, $00, $16, $69, $37, $00, $84, $E9, $2F,
    $06,
    $10, $F4, $97, $00, $1A, $75, $4B, $00, $87, $6D, $52, $05, $11, $2D, $69,
    $00,
    $1D, $95, $B5, $00, $8A, $A5, $6D, $02, $15, $D2, $6E, $00, $82, $D2, $5E,
    $07,
    $0E, $E9, $2E, $00, $19, $EA, $96, $00, $86, $DA, $95, $05, $10, $5B, $4A,
    $00,
    $1C, $AB, $69, $00, $88, $2A, $D8, $03);

//数组gLanarHoliDay存放每年的二十四节气对应的阳历日期
//每年的二十四节气对应的阳历日期几乎固定,平均分布于十二个月中
//   1月          2月         3月         4月         5月         6月
//小寒 大寒   立春  雨水   惊蛰 春分   清明 谷雨   立夏 小满   芒种 夏至
//   7月          8月         9月         10月       11月        12月
//小暑 大暑   立秋  处暑   白露 秋分   寒露 霜降   立冬 小雪   大雪 冬至
{*********************************************************************************
节气无任何确定规律,所以只好存表,要节省空间,所以....
**********************************************************************************}
//数据格式说明:
//如1901年的节气为
//  1月     2月     3月   4月    5月   6月   7月    8月   9月    10月  11月     12月
// 6, 21, 4, 19,  6, 21, 5, 21, 6,22, 6,22, 8, 23, 8, 24, 8, 24, 8, 24, 8, 23, 8, 22
// 9, 6,  11,4,   9, 6,  10,6,  9,7,  9,7,  7, 8,  7, 9,  7,  9, 7,  9, 7,  8, 7, 15
//上面第一行数据为每月节气对应日期,15减去每月第一个节气,每月第二个节气减去15得第二行
// 这样每月两个节气对应数据都小于16,每月用一个字节存放,高位存放第一个节气数据,低位存放
//第二个节气的数据,可得下表
  solarTerm:array[0..1799] of Byte=(
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1901
   $96, $A4, $96, $96, $97, $87, $79, $79, $79, $69, $78, $78,   //1902
   $96, $A5, $87, $96, $87, $87, $79, $69, $69, $69, $78, $78,   //1903
   $86, $A5, $96, $A5, $96, $97, $88, $78, $78, $79, $78, $87,   //1904
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1905
   $96, $A4, $96, $96, $97, $97, $79, $79, $79, $69, $78, $78,   //1906
   $96, $A5, $87, $96, $87, $87, $79, $69, $69, $69, $78, $78,   //1907
   $86, $A5, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //1908
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1909
   $96, $A4, $96, $96, $97, $97, $79, $79, $79, $69, $78, $78,   //1910
   $96, $A5, $87, $96, $87, $87, $79, $69, $69, $69, $78, $78,   //1911
   $86, $A5, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //1912
   $95, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1913
   $96, $B4, $96, $A6, $97, $97, $79, $79, $79, $69, $78, $78,   //1914
   $96, $A5, $97, $96, $97, $87, $79, $79, $69, $69, $78, $78,   //1915
   $96, $A5, $96, $A5, $96, $97, $88, $78, $78, $79, $77, $87,   //1916
   $95, $B4, $96, $A6, $96, $97, $78, $79, $78, $69, $78, $87,   //1917
   $96, $B4, $96, $A6, $97, $97, $79, $79, $79, $69, $78, $77,   //1918
   $96, $A5, $97, $96, $97, $87, $79, $79, $69, $69, $78, $78,   //1919
   $96, $A5, $96, $A5, $96, $97, $88, $78, $78, $79, $77, $87,   //1920
   $95, $B4, $96, $A5, $96, $97, $78, $79, $78, $69, $78, $87,   //1921
   $96, $B4, $96, $A6, $97, $97, $79, $79, $79, $69, $78, $77,   //1922
   $96, $A4, $96, $96, $97, $87, $79, $79, $69, $69, $78, $78,   //1923
   $96, $A5, $96, $A5, $96, $97, $88, $78, $78, $79, $77, $87,   //1924
   $95, $B4, $96, $A5, $96, $97, $78, $79, $78, $69, $78, $87,   //1925
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1926
   $96, $A4, $96, $96, $97, $87, $79, $79, $79, $69, $78, $78,   //1927
   $96, $A5, $96, $A5, $96, $96, $88, $78, $78, $78, $87, $87,   //1928
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $79, $77, $87,   //1929
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1930
   $96, $A4, $96, $96, $97, $87, $79, $79, $79, $69, $78, $78,   //1931
   $96, $A5, $96, $A5, $96, $96, $88, $78, $78, $78, $87, $87,   //1932
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //1933
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1934
   $96, $A4, $96, $96, $97, $97, $79, $79, $79, $69, $78, $78,   //1935
   $96, $A5, $96, $A5, $96, $96, $88, $78, $78, $78, $87, $87,   //1936
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //1937
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1938
   $96, $A4, $96, $96, $97, $97, $79, $79, $79, $69, $78, $78,   //1939
   $96, $A5, $96, $A5, $96, $96, $88, $78, $78, $78, $87, $87,   //1940
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //1941
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1942
   $96, $A4, $96, $96, $97, $97, $79, $79, $79, $69, $78, $78,   //1943
   $96, $A5, $96, $A5, $A6, $96, $88, $78, $78, $78, $87, $87,   //1944
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $79, $77, $87,   //1945
   $95, $B4, $96, $A6, $97, $97, $78, $79, $78, $69, $78, $77,   //1946
   $96, $B4, $96, $A6, $97, $97, $79, $79, $79, $69, $78, $78,   //1947
   $96, $A5, $A6, $A5, $A6, $96, $88, $88, $78, $78, $87, $87,   //1948
   $A5, $B4, $96, $A5, $96, $97, $88, $79, $78, $79, $77, $87,   //1949
   $95, $B4, $96, $A5, $96, $97, $78, $79, $78, $69, $78, $77,   //1950
   $96, $B4, $96, $A6, $97, $97, $79, $79, $79, $69, $78, $78,   //1951
   $96, $A5, $A6, $A5, $A6, $96, $88, $88, $78, $78, $87, $87,   //1952
   $A5, $B4, $96, $A5, $96, $97, $88, $78, $78, $79, $77, $87,   //1953
   $95, $B4, $96, $A5, $96, $97, $78, $79, $78, $68, $78, $87,   //1954
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1955
   $96, $A5, $A5, $A5, $A6, $96, $88, $88, $78, $78, $87, $87,   //1956
   $A5, $B4, $96, $A5, $96, $97, $88, $78, $78, $79, $77, $87,   //1957
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //1958
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1959
   $96, $A4, $A5, $A5, $A6, $96, $88, $88, $88, $78, $87, $87,   //1960
   $A5, $B4, $96, $A5, $96, $96, $88, $78, $78, $78, $87, $87,   //1961
   $96, $B4, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //1962
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1963
   $96, $A4, $A5, $A5, $A6, $96, $88, $88, $88, $78, $87, $87,   //1964
   $A5, $B4, $96, $A5, $96, $96, $88, $78, $78, $78, $87, $87,   //1965
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //1966
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1967
   $96, $A4, $A5, $A5, $A6, $A6, $88, $88, $88, $78, $87, $87,   //1968
   $A5, $B4, $96, $A5, $96, $96, $88, $78, $78, $78, $87, $87,   //1969
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //1970
   $96, $B4, $96, $A6, $97, $97, $78, $79, $79, $69, $78, $77,   //1971
   $96, $A4, $A5, $A5, $A6, $A6, $88, $88, $88, $78, $87, $87,   //1972
   $A5, $B5, $96, $A5, $A6, $96, $88, $78, $78, $78, $87, $87,   //1973
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //1974
   $96, $B4, $96, $A6, $97, $97, $78, $79, $78, $69, $78, $77,   //1975
   $96, $A4, $A5, $B5, $A6, $A6, $88, $89, $88, $78, $87, $87,   //1976
   $A5, $B4, $96, $A5, $96, $96, $88, $88, $78, $78, $87, $87,   //1977
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $79, $78, $87,   //1978
   $96, $B4, $96, $A6, $96, $97, $78, $79, $78, $69, $78, $77,   //1979
   $96, $A4, $A5, $B5, $A6, $A6, $88, $88, $88, $78, $87, $87,   //1980
   $A5, $B4, $96, $A5, $A6, $96, $88, $88, $78, $78, $77, $87,   //1981
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $79, $77, $87,   //1982
   $95, $B4, $96, $A5, $96, $97, $78, $79, $78, $69, $78, $77,   //1983
   $96, $B4, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $87,   //1984
   $A5, $B4, $A6, $A5, $A6, $96, $88, $88, $78, $78, $87, $87,   //1985
   $A5, $B4, $96, $A5, $96, $97, $88, $78, $78, $79, $77, $87,   //1986
   $95, $B4, $96, $A5, $96, $97, $88, $79, $78, $69, $78, $87,   //1987
   $96, $B4, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $86,   //1988
   $A5, $B4, $A5, $A5, $A6, $96, $88, $88, $88, $78, $87, $87,   //1989
   $A5, $B4, $96, $A5, $96, $96, $88, $78, $78, $79, $77, $87,   //1990
   $95, $B4, $96, $A5, $86, $97, $88, $78, $78, $69, $78, $87,   //1991
   $96, $B4, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $86,   //1992
   $A5, $B3, $A5, $A5, $A6, $96, $88, $88, $88, $78, $87, $87,   //1993
   $A5, $B4, $96, $A5, $96, $96, $88, $78, $78, $78, $87, $87,   //1994
   $95, $B4, $96, $A5, $96, $97, $88, $76, $78, $69, $78, $87,   //1995
   $96, $B4, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $86,   //1996
   $A5, $B3, $A5, $A5, $A6, $A6, $88, $88, $88, $78, $87, $87,   //1997
   $A5, $B4, $96, $A5, $96, $96, $88, $78, $78, $78, $87, $87,   //1998
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //1999
   $96, $B4, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $86,   //2000
   $A5, $B3, $A5, $A5, $A6, $A6, $88, $88, $88, $78, $87, $87,   //2001
   $A5, $B4, $96, $A5, $96, $96, $88, $78, $78, $78, $87, $87,   //2002
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //2003
   $96, $B4, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $86,   //2004
   $A5, $B3, $A5, $A5, $A6, $A6, $88, $88, $88, $78, $87, $87,   //2005
   $A5, $B4, $96, $A5, $A6, $96, $88, $88, $78, $78, $87, $87,   //2006
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $69, $78, $87,   //2007
   $96, $B4, $A5, $B5, $A6, $A6, $87, $88, $87, $78, $87, $86,   //2008
   $A5, $B3, $A5, $B5, $A6, $A6, $88, $88, $88, $78, $87, $87,   //2009
   $A5, $B4, $96, $A5, $A6, $96, $88, $88, $78, $78, $87, $87,   //2010
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $79, $78, $87,   //2011
   $96, $B4, $A5, $B5, $A5, $A6, $87, $88, $87, $78, $87, $86,   //2012
   $A5, $B3, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $87,   //2013
   $A5, $B4, $96, $A5, $A6, $96, $88, $88, $78, $78, $87, $87,   //2014
   $95, $B4, $96, $A5, $96, $97, $88, $78, $78, $79, $77, $87,   //2015
   $95, $B4, $A5, $B4, $A5, $A6, $87, $88, $87, $78, $87, $86,   //2016
   $A5, $C3, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $87,   //2017
   $A5, $B4, $A6, $A5, $A6, $96, $88, $88, $78, $78, $87, $87,   //2018
   $A5, $B4, $96, $A5, $96, $96, $88, $78, $78, $79, $77, $87,   //2019
   $95, $B4, $A5, $B4, $A5, $A6, $97, $87, $87, $78, $87, $86,   //2020
   $A5, $C3, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $86,   //2021
   $A5, $B4, $A5, $A5, $A6, $96, $88, $88, $88, $78, $87, $87,   //2022
   $A5, $B4, $96, $A5, $96, $96, $88, $78, $78, $79, $77, $87,   //2023
   $95, $B4, $A5, $B4, $A5, $A6, $97, $87, $87, $78, $87, $96,   //2024
   $A5, $C3, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $86,   //2025
   $A5, $B3, $A5, $A5, $A6, $A6, $88, $88, $88, $78, $87, $87,   //2026
   $A5, $B4, $96, $A5, $96, $96, $88, $78, $78, $78, $87, $87,   //2027
   $95, $B4, $A5, $B4, $A5, $A6, $97, $87, $87, $78, $87, $96,   //2028
   $A5, $C3, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $86,   //2029
   $A5, $B3, $A5, $A5, $A6, $A6, $88, $88, $88, $78, $87, $87,   //2030
   $A5, $B4, $96, $A5, $96, $96, $88, $78, $78, $78, $87, $87,   //2031
   $95, $B4, $A5, $B4, $A5, $A6, $97, $87, $87, $78, $87, $96,   //2032
   $A5, $C3, $A5, $B5, $A6, $A6, $88, $88, $88, $78, $87, $86,   //2033
   $A5, $B3, $A5, $A5, $A6, $A6, $88, $78, $88, $78, $87, $87,   //2034
   $A5, $B4, $96, $A5, $A6, $96, $88, $88, $78, $78, $87, $87,   //2035
   $95, $B4, $A5, $B4, $A5, $A6, $97, $87, $87, $78, $87, $96,   //2036
   $A5, $C3, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $86,   //2037
   $A5, $B3, $A5, $A5, $A6, $A6, $88, $88, $88, $78, $87, $87,   //2038
   $A5, $B4, $96, $A5, $A6, $96, $88, $88, $78, $78, $87, $87,   //2039
   $95, $B4, $A5, $B4, $A5, $A6, $97, $87, $87, $78, $87, $96,   //2040
   $A5, $C3, $A5, $B5, $A5, $A6, $87, $88, $87, $78, $87, $86,   //2041
   $A5, $B3, $A5, $B5, $A6, $A6, $88, $88, $88, $78, $87, $87,   //2042
   $A5, $B4, $96, $A5, $A6, $96, $88, $88, $78, $78, $87, $87,   //2043
   $95, $B4, $A5, $B4, $A5, $A6, $97, $87, $87, $88, $87, $96,   //2044
   $A5, $C3, $A5, $B4, $A5, $A6, $87, $88, $87, $78, $87, $86,   //2045
   $A5, $B3, $A5, $B5, $A6, $A6, $87, $88, $88, $78, $87, $87,   //2046
   $A5, $B4, $96, $A5, $A6, $96, $88, $88, $78, $78, $87, $87,   //2047
   $95, $B4, $A5, $B4, $A5, $A5, $97, $87, $87, $88, $86, $96,   //2048
   $A4, $C3, $A5, $A5, $A5, $A6, $97, $87, $87, $78, $87, $86,   //2049
   $A5, $C3, $A5, $B5, $A6, $A6, $87, $88, $78, $78, $87, $87);  //2050

  CnDayStr: array[1..30] of string = (
    '初一', '初二', '初三', '初四', '初五',
    '初六', '初七', '初八', '初九', '初十',
    '十一', '十二', '十三', '十四', '十五',
    '十六', '十七', '十八', '十九', '二十',
    '廿一', '廿二', '廿三', '廿四', '廿五',
    '廿六', '廿七', '廿八', '廿九', '三十');

   GanStr : array[1..10] of string = (
    '甲','乙','丙','丁','戊','己','庚','辛','壬','癸');

   ZhiStr : array[1..12] of string = (
    '子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥');

   AnimalsStr : array[1..12] of string = (
    '鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪');

   HourStr : array[1..12] of string =(
    '子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥');

   SolarTermStr : array[1..24] of string = (
    '小寒','大寒','立春','雨水','惊蛰','春分','清明','谷雨','立夏',
    '小满','芒种','夏至','小暑','大暑','立秋','处暑','白露','秋分',
    '寒露','霜降','立冬','小雪','大雪','冬至');

function DaysOnRange(AYear1,AMonth1,AYear2,AMonth2 : Integer):Integer;
var
  iYear,iMonth,iTotalDays : Integer;
  iTotalMonths : Integer;
  //指定公历月的天数
  function DaysPerMonth(AYear, AMonth: Integer): Integer;
  const
    DaysInMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  begin
    Result := DaysInMonth[AMonth];
    if (AMonth = 2) and IsLeapYear(AYear) then Inc(Result); { leap-year Feb is special }
  end;

  //指定公历年是否为闰年
  function IsLeapYear(AYear: Integer): Boolean;
  begin
    Result := (AYear mod 4 = 0) and ((AYear mod 100 <> 0) or (AYear mod 400 = 0));
  end;

begin
  iTotalDays := 0;
  iYear := AYear1;
  iMonth := AMonth1;

  while not((iYear = AYear2) and (iMonth = AMonth2)) do
  begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -