资源简介
给定年份,获取指定年份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
评论
共有 条评论