?? lunar.inc
字號:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 申明:
; 1. 本開發包為共享軟件,你可以免費傳播、使用本軟件,但不得用于商業目的。
; 2. 傳播時請不要改動版權信息,并注明出處。
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
; Version 1.0
; Date: 2000.09.15
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 陽歷/農歷轉換計算開發包
;
; 文件包括:
; Lunar.inc -- Win32Asm 語言的 include 文件,定義了使用的數據結構
; 如果使用 C 或其他語言請自行修改格式
; Lunar.dll -- 動態連接庫文件
; Lunar.lib -- Lunar.dll 對應的導入庫文件
;
; 開發包包括一個 Win32Asm 的使用例子在 Example 目錄中
;
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 功能:計算 1901 - 2050 的農歷、節氣數據
; 使用:
; 1. 定義 LUNARDATA 數據結構
; 2. 填寫 LUNARDATA 數據結構的輸入字段并調用 _GetLunarData
; 3. 輸出結果在 LUNARDATA 數據結構的輸出字段中
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 庫文件中可以使用的有 3 個函數
;
; 1. 取農歷數據 _GetLunarData(_lpstLunarData)
; 輸入:LUNARDATA 結構地址,輸入陽歷數據填寫在結構中
; 輸出:如果成功 eax = 0,返回數據在 LUNARDATA 結構中
; 如果輸入輸入超過范圍或不合法,返回 eax <> 0
;
; 2. 取對應陽歷年月的天數 _GetMonthDays(dwYear,dwMonth)
; 輸入:年份,月份
; 輸出:eax = 天數
;
; 3. 檢測對應年份是否閏年 _IsLeapYear(dwYear)
; 輸入:年份
; 輸出:eax = 1 是閏年,否則 eax = 0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_GetLunarData proto :DWORD
_GetMonthDays proto :DWORD,:DWORD
_GetWeekDay proto :DWORD,:DWORD,:DWORD
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 數據結構
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;********************************************************************
; LUNARDATA 定義輸入參數和輸出結果
;********************************************************************
LUNARDATA struct
;********************************************************************
; 下面由調用者填寫,為輸入參數
;********************************************************************
dwYear dd ? ;輸入參數 - 年,十進制,例如 2000
dwMonth dd ? ;輸入參數 - 月,十進制,例如 10
dwDay dd ? ;輸入參數 - 日,十進制,例如 1
;********************************************************************
; 下面由子程序返回,為輸出參數
;********************************************************************
dwLunarYear dd ? ;農歷年,如 2000
dwLunarMonth dd ? ;農歷月,如 12
dwLunarDay dd ? ;農歷日,如 31
dwWeekDay dd ? ;星期,星期日=0,星期一=1 ...
dwIsLeapMonth dd ? ;是否是閏月,返回 1 為農歷閏月
szLunarYear db 6 dup (?) ;天干年字符串,如“辛亥”
szLunarYearA db 4 dup (?) ;天干年字符串,如“鼠”
szLunarMonth db 10 dup (?) ;農歷月字符串,如“閏十二月”
szLunarDay db 6 dup (?) ;農歷日字符串,如“初十”
szLunarHolDay db 6 dup (?) ;農歷節氣字符串,如“大暑”
szWeekDay db 8 dup (?) ;星期字符串,如“星期一”
LUNARDATA ends
;********************************************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -