資源簡介
給定年份,獲取指定年份24節氣的計算方法,精確到分鐘。
c++寫的一個類。

代碼片段和文件信息
///////////////////////////////////////////////////////////
//??JieQi.cpp
//??Implementation?of?the?Class?JieQi
//??Created?on:??????26-十一月-2009?9:27:06
//??Original?author:?Administrator
// 功能:按給定的年份計算24節氣的精確時間
// 計算結果與壽星萬年歷有誤差,在正負1小時以內
// 注意:個別年份的個別節氣有例外,程序中只列出了2000年以后的情況
///////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“public.h“
#include?“JieQi.h“
using?namespace?std;
extern?string?ssDiZhi[12]ssTianGan[10];
JieQi::JieQi(){
}
JieQi::JieQi(int?nYear)
{
m_nYear?=?nYear;
}
JieQi::~JieQi(){
}
map?JieQi::GetJieQi(int?nYear){
map?mapJieQi;
m_nYear?=?nYear;
mapJieQi.insert(make_pair(LICHUNgetLichun()));//
mapJieQi.insert(make_pair(YUSHUIgetYushui()));//
mapJieQi.insert(make_pair(JINGZHEgetJingzhe()));//
mapJieQi.insert(make_pair(CHUNFENgetChunfen()));//
mapJieQi.insert(make_pair(QINGMINGgetQingming()));//
mapJieQi.insert(make_pair(GUYUgetGuyu()));//
mapJieQi.insert(make_pair(LIXIAgetLixia()));//
mapJieQi.insert(make_pair(XIAOMANgetXiaoman()));//
mapJieQi.insert(make_pair(MANGZHONGgetMangzhong()));//
mapJieQi.insert(make_pair(XIAZHIgetXiazhi()));//
mapJieQi.insert(make_pair(XIAOSHUgetXiaoshu()));//
mapJieQi.insert(make_pair(DASHUgetDashu()));//
mapJieQi.insert(make_pair(LIQIUgetLiqiu()));//
mapJieQi.insert(make_pair(CHUSHUgetChushu()));//
mapJieQi.insert(make_pair(BAILUgetBailu()));//
mapJieQi.insert(make_pair(QIUFENgetQiufen()));//
mapJieQi.insert(make_pair(HANLUgetHanlu()));//
mapJieQi.insert(make_pair(SHUANGJIANGgetShuangjiang()));//
mapJieQi.insert(make_pair(LIDONGgetLidong()));//
mapJieQi.insert(make_pair(XIAOXUEgetXiaoxue()));//
mapJieQi.insert(make_pair(DAXUEgetDaxue()));//
mapJieQi.insert(make_pair(DONGZHIgetDongzhi()));//
mapJieQi.insert(make_pair(XIAOHANgetXiaohan()));//
mapJieQi.insert(make_pair(DAHANgetDahan()));//
return??mapJieQi;
}
CTime?JieQi::getLichun()
{
//公式解讀:年數的后2位乘0.2422加3.87取整數減閏年數。21世紀C值=3.87,22世紀C值=4.15。
//舉例說明:2058年立春日期的計算步驟[58×.0.2422+3.87]-[(58-1)/4]=17-14=3,則2月3日立春。
float?mm;
if?(m_nYear?2100)
{
mm?=?((m_nYear%100)*0.2422?+?3.87)?-?(m_nYear%100?-?1)/4;
}
else
{
mm?=?((m_nYear%100)*0.2422?+?4.15)?-?(m_nYear%100?-?1)/4;
}
return??Compute(m_nYearMonth_Februarymm);
}
CTime?JieQi::getYushui()
{
//計算?[Y*D+C]-L公式解讀:年數的后2位乘0.2422加18.74取整數減閏年數。21世紀雨水的C值18.73。
//舉例說明:2008年雨水日期=[8×.0.2422+18.73]-[(8-1)/4]=20-1=19,2月19日雨水。
float?mm?=?((m_nYear%100)*0.2422?+?18.73)?-?(m_nYear%100?-?1)/4;
return??Compute(m_nYearMonth_Februarymm);
}
CTime?JieQi::getJingzhe()
{
//公式解讀:年數的后2位乘0.2422加5.63取整數減閏年數。21世紀驚蟄的C值=5.63。
//舉例說明:2088年驚蟄日期=[88×.0.2422+5.63]-[88/4]=26-22=4,3月4日是驚蟄。
float?mm?=?((m_nYear%100)*0.2422?+?5.63)?-?(m_nYear%100)/4;
return??Compute(m_nYearMonth_Marchmm);
}
CTime?JieQi::getChunfen()
{
//公式解讀:年數的后2位乘0.2422加20.646取整數減閏年數。21世紀春分的C值=20.646。
//舉例說明:2092年春分日期=[
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????12065??2009-12-01?14:09??JieQi.cpp
?????文件???????1256??2009-12-01?13:09??JieQi.h
-----------?---------??----------?-----??----
????????????????13321????????????????????2
評論
共有 條評論