问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求“日梭万年历”网络版源码,或计算24节气方法

发布网友 发布时间:2022-05-02 03:13

我来回答

4个回答

热心网友 时间:2022-06-27 12:18

struct ConvDate
{
int Source;
int SolarYear;
int SolarMonth;
int SolarDate;
int LunarYear;
int LunarMonth;
int LunarDate;
int Weekday;
int Kan;
int Chih;
};

unsigned __int64 m_ui64SolarTerms[24];
unsigned __int64 m_ui64MonthDays[13];

m_ui64MonthDays[0] = 0ui64;
m_ui64MonthDays[1] = 31ui64;
m_ui64MonthDays[2] = 28ui64;
m_ui64MonthDays[3] = 31ui64;
m_ui64MonthDays[4] = 30ui64;
m_ui64MonthDays[5] = 31ui64;
m_ui64MonthDays[6] = 30ui64;
m_ui64MonthDays[7] = 31ui64;
m_ui64MonthDays[8] = 31ui64;
m_ui64MonthDays[9] = 30ui64;
m_ui64MonthDays[10] = 31ui64;
m_ui64MonthDays[11] = 30ui64;
m_ui64MonthDays[12] = 31ui64;

m_ui64SolarTerms[0] = 0ui64;
m_ui64SolarTerms[1] = 21208ui64;
m_ui64SolarTerms[2] = 42467ui64;
m_ui64SolarTerms[3] = 63836ui64;
m_ui64SolarTerms[4] = 85337ui64;
m_ui64SolarTerms[5] = 107014ui64;
m_ui64SolarTerms[6] = 128867ui64;
m_ui64SolarTerms[7] = 150921ui64;
m_ui64SolarTerms[8] = 173149ui64;
m_ui64SolarTerms[9] = 195551ui64;
m_ui64SolarTerms[10] = 218072ui64;
m_ui64SolarTerms[11] = 240693ui64;
m_ui64SolarTerms[12] = 263343ui64;
m_ui64SolarTerms[13] = 285989ui64;
m_ui64SolarTerms[14] = 308563ui64;
m_ui64SolarTerms[15] = 331033ui64;
m_ui64SolarTerms[16] = 353350ui64;
m_ui64SolarTerms[17] = 375494ui64;
m_ui64SolarTerms[18] = 397447ui64;
m_ui64SolarTerms[19] = 419210ui64;
m_ui64SolarTerms[20] = 440795ui64;
m_ui64SolarTerms[21] = 462224ui64;
m_ui64SolarTerms[22] = 483532ui64;
m_ui64SolarTerms[23] = 504758ui64;

/* 24节气计算 */

int __fastcall IsLeapYear(int iYear)
{
if ((iYear & 3) != 0)
{
return 0;
}
else if (iYear % 100 != 0)
{
return 1;
}
else if (iYear % 400 == 0)
{
return 1;
}
else
{
return 0;
}
}

int __fastcall TheSolarTerm(int iYear, int n)
{
unsigned __int64 k;
unsigned __int64 ddate_utc = 22085493000000ui64;
unsigned __int64 doffdate, dadddate;

doffdate = m_ui64SolarTerms[n] * 600000ui64;
doffdate += static_cast<unsigned __int64>(iYear - 1900) * 315569259747ui64;
doffdate -= ddate_utc;

doffdate /= 864000000ui64; //86400: 60 * 60 * 24 * 1000

int i = 1969;
dadddate = 0ui64;
while (dadddate < doffdate)
{
i++;
k = dadddate;
dadddate += 365ui64 + static_cast<unsigned __int64>(IsLeapYear(i));
};

if (dadddate > doffdate)
{
int j = 0;
dadddate = k;
while (dadddate < doffdate && j < 12)
{
j++;
k = dadddate;
dadddate += m_ui64MonthDays[j];
if (j == 2 && (IsLeapYear(i) != 0))
{
dadddate++;
}
};
return static_cast<int>(doffdate - k + 1ui64);
}
else // j = doffdate
{
return 1;
}
}

int CalConv(struct ConvDate &cd)
{
int leap, d, sm, y, im, l1, l2, acc, i, lm, kc;
if (cd.Source == 0) /* Solar */
{
if (cd.SolarYear <= FIRSTYEAR || cd.SolarYear > LASTYEAR)
{
return 1;
}
sm = cd.SolarMonth - 1;
if (sm < 0 || sm > 11)
{
return 2;
}
leap = GetLeap(cd.SolarYear);
d = (sm == 1) ? (leap + 28) : SolarCal[sm];
if (cd.SolarDate < 1 || cd.SolarDate > d)
{
return 3;
}
y = cd.SolarYear - FIRSTYEAR;
acc = SolarDays[leap][sm] + cd.SolarDate;
cd.Weekday = (acc + LunarCal[y].BaseWeekday) % 7;
kc = acc + LunarCal[y].BaseKanChih;
cd.Kan = kc % 10;
cd.Chih = kc % 12;
if (acc <= LunarCal[y].BaseDays)
{
y--;
cd.LunarYear = cd.SolarYear - 1;
leap = GetLeap(cd.LunarYear);
sm += 12;
acc = SolarDays[leap][sm] + cd.SolarDate;
}
else
{
cd.LunarYear = cd.SolarYear;
}
l1 = LunarCal[y].BaseDays;
for (i = 0; i < 13; i++)
{
l2 = l1 + LunarCal[y].MonthDays[i] + 29;
if (acc <= l2)
{
break;
}
l1 = l2;
}
cd.LunarMonth = i + 1;
cd.LunarDate = acc - l1;
im = LunarCal[y].Intercalation;
if (im != 0 && cd.LunarMonth > im)
{
cd.LunarMonth--;
if (cd.LunarMonth == im)
{
cd.LunarMonth = -im;
}
}
if (cd.LunarMonth > 12)
{
cd.LunarMonth -= 12;
}
}
else /* Lunar */
{
if (cd.LunarYear < FIRSTYEAR || cd.LunarYear >= LASTYEAR)
{
return 1;
}
y = cd.LunarYear - FIRSTYEAR;
im = LunarCal[y].Intercalation;
lm = cd.LunarMonth;
if (lm < 0)
{
if (lm != -im)
{
return 2;
}
}
else if (lm < 1 || lm > 12)
{
return 2;
}
if (im != 0)
{
if (lm > im)
{
lm++;
}
else if (lm == -im)
{
lm = im + 1;
}
}
lm--;
if (cd.LunarDate > LunarCal[y].MonthDays[lm] + 29)
{
return 3;
}
acc = LunarCal[y].BaseDays;
for (i = 0; i < lm; i++)
{
acc += LunarCal[y].MonthDays[i] + 29;
}
acc += cd.LunarDate;
leap = GetLeap(cd.LunarYear);
for (i = 13; i >= 0; i--)
{
if (acc > SolarDays[leap][i])
{
break;
}
}
cd.SolarDate = acc - SolarDays[leap][i];
if (i <= 11)
{
cd.SolarYear = cd.LunarYear;
cd.SolarMonth = i + 1;
}
else
{
cd.SolarYear = cd.LunarYear + 1;
cd.SolarMonth = i - 11;
}
leap = GetLeap(cd.SolarYear);
y = cd.SolarYear - FIRSTYEAR;
acc = SolarDays[leap][cd.SolarMonth - 1] + cd.SolarDate;
cd.Weekday = (acc + LunarCal[y].BaseWeekday) % 7;
kc = acc + LunarCal[y].BaseKanChih;
cd.Kan = kc % 10;
cd.Chih = kc % 12;
}

return 0;
}

热心网友 时间:2022-06-27 12:18

日梭万年历及google日历是量小非君子,无毒不丈夫。

记得有个VC做的农历日历控件,源代码结构应该清晰一点。

热心网友 时间:2022-06-27 12:19

查看
http://www.21softs.com/的源代码
复制下来,粘贴到DM中,就可以用。
刚才自己实践了一下。

补充:至于算法到没有怎么研究过,你一说我也想了解一下这些节气的了。
我先到网上看看。:)

热心网友 时间:2022-06-27 12:19

http://shi.baidu.com/shi/9748.html?imfr=lug

参考资料:http://shi.baidu.com/shi/9748.html?imfr=lug

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我的英语书的英文怎么写 三星g9280晃两下 手机自动重启是怎么了 三星9280图上显示已关闭,这些程序是被禁止了还是仍在自启? 三星9280如何停止自起程序 三星9280安卓系统防后自启动 浇筑楼板如何检测 现浇楼板强度怎么检测 砼回弹哪些构件 楼板强度如何检测 苹果14怎么划掉看过的东西 《江湖》结尾凶手是谁? 春去秋来,请问这句是什么生肖? 春去秋来是块料,是什么生肖 日梭万年历和寿星天文历哪个准算法更精确? 江湖最后一个大佬高清电影 江湖最后一个大佬的剧情简介 日梭万年历的同类软件比较 学书法(毛笔)的顺序,另,求网上的权威的书法教学视频,要有字幕的 除了日梭万年历还有其他查日中(日上中天)时间的软件吗? 谁知道哪有比较好的自学毛笔书法的视频教学啊? 哪个网有毛笔书法教学视频下载? 男人梦见儿子向我跑来抱抱 梦见他儿子对我敌意很大,这男人说我欺负他儿子解梦? 梦见男人对我有暧昧 儿子在一旁? 梦见好几个男人逗我,,还让我笑 王者荣耀被盗号,为什么盗号者用光我的点券买了一堆喇叭??? 《王者荣耀》点券被吞事件是怎么回事? 别人用我的手机号购买了王者荣耀点券,我怎么找回来这钱啊? 王者荣耀点券被老弟乱花可以退回吗? 我家狗狗为什么拉屎次数很多?一天要拉好多次烦死了 这个是什么狗狗 日梭万年历和寿星天文历哪个准算法更精确 谁有《江湖最后一个大佬?(1990)》百度云无删减完整版在线观看沈威导演的 以“给灾区同学的一封信为题”的作文?(要有事例) 给分别后的同学写一封信 初心不改克清贫,世态炎凉白里青。春去秋来不眠夜,无意蓬荜寄古亭。猜12生肖其中一个_百度问一问 写给离家出走的同学一封信 写给同学的一封信:关于心理健康的 致逗留在校同学的一封信 我老公下面长了很多小颗粒,这正常吗? 我女朋友下面 有像米粒似的 东西 那是什么啊?? 皮肤下面长了一粒一粒的像米粒大小的东西,不痒也不痛,看不到,用手摸才感觉的到,是什么 我的*上有白色颗粒状的小米粒样的东西,不知是怎么回事。不痛不痒。有点类似粉刺,可以挤出来。 女生下面长很多颗粒是怎么回事? 外阴长小米粒样的白色东西怎么回事 外阴阴唇上长小米粒大的疙瘩 下面有毛的地方生了像米粒一样的东西,是什么原因,就这两天才有的 我的阴唇内部长了一个米粒大小的疙瘩,乳白色的,没感觉 是什么东西啊 小阴唇的上方有白色小米粒一样的东西,能挤出来 是什么啊 龟头下面一周长出 白色小米粒状的东西是什么? 高龄产妇孕前检查,除了遗传方面的检查,还要检查哪些?