社区
CGI
帖子详情
求公历和农历的PERL转换程序
AllCHN
2003-08-04 10:57:41
感觉这是个非常困难的问题,要各位大虾费心总觉得有点过分,不过,也许我们可以因此交流一些PERL方面的心得、程序,也算有所收获!
要求:
(1)计算公历某日期的农历日期;
(2)得到农历某年的月份列表(闰月用负数表示, 如-7表示闰七月);
(3)计算农历某年某月的天数。
(4)计算农历某年的干支、属相。
...全文
917
5
打赏
收藏
求公历和农历的PERL转换程序
感觉这是个非常困难的问题,要各位大虾费心总觉得有点过分,不过,也许我们可以因此交流一些PERL方面的心得、程序,也算有所收获! 要求: (1)计算公历某日期的农历日期; (2)得到农历某年的月份列表(闰月用负数表示, 如-7表示闰七月); (3)计算农历某年某月的天数。 (4)计算农历某年的干支、属相。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ykj76
2003-08-29
打赏
举报
回复
其实转换本身不是很难,主要是需要一个很大的数据来对应.也就是dwCalendarData[].
上面的只提供了20年的
leebx
2003-08-29
打赏
举报
回复
给你一段javascript代码参考怎么样,如果要的话留个email
AllCHN
2003-08-26
打赏
举报
回复
up
subscribe
2003-08-08
打赏
举报
回复
up
lvjack
2003-08-05
打赏
举报
回复
给你一段代码参考:
/*************************************************
计算阴历日期
范围从2000/02/05开始的20年
代码实现:耙子 2001/08/17
最后修订: 2001/08/18
**************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
typedef unsigned int DWORD;
/**************************************************
sLunar: 返回阴历日期字符串
dwDays: 所求日期距离 2000/02/05的天数差
**************************************************/
void Lunar2Solar(char *sLunar, const DWORD dwDays)
{
const char sTG[][3]= {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
const char sDZ[][3]= {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};
const char sSX[][3]= {"鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"};
const char sMon[][3]= {"正","二","三","四","五","六","七","八","九","十","冬","腊"};
const char sDate[][5]= {
"初一","初二","初三","初四","初五","初六","初七","初八","初九","初十",
"十一","十二","十三","十四","十五","十六","十七","十八","十九","二十",
"廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"
};
// Start from 2000/2/5, 20 Lunar years' Data
const DWORD dwLunarYears= 20;
const DWORD dwCalendarData[]=
{
0xc96, // 0000 0000 1100 1001 0110
0x41a95, // 0100 0001 1010 1001 0101
0xd4a, // 0000 0000 0100 1101 1010
0xda5,
0x20b55,
0x56a,
0x7155b,
0x25d,
0x92d,
0x5192b,
0xa95,
0xb4a,
0x416aa,
0xad5,
0x90ab5,
0x4ba,
0xa5b,
0x60a57,
0x52b,
0xa93,
0x40e59
};
DWORD i, j;
DWORD yy=0, mm=0;
DWORD t, r, m, p=0, q;
for (i=0; i< dwLunarYears; i++)
{
t= dwCalendarData[i];
r= (t >> 16) & 0x0f;
m= (r==0)?12:13;
for (j=0; j<m; j++)
{
q= ((t >> (m-j-1)) & 1)==0 ? 29 : 30;
if (p+q > dwDays)
break;
p+= q;
}
if (j < m)
break;
}
// Date Overflow
if (i == dwLunarYears)
{
sprintf(sLunar, "%s", "I don't know so much!");
return;
}
sprintf(
sLunar,
"%s%s年(%s) %s%s月%s",
sTG[(i+6)%10], // Heavenly stemas
sDZ[(i+4)%12], // Earthly Branches
sSX[(i+4)%12], // Shu xing
(((r!=0) && (j == r)) ? "闰" : ""), // Leap month
sMon[((r!=0) && (j > r-1)) ? j-1 : j],
sDate[dwDays-p]
);
return;
}
int main ()
{
time_t t1, t2;
struct tm tt;
DWORD dwDiffTime;
char sLunar[32];
tt.tm_year= 2000-1900;
tt.tm_mon=1;
tt.tm_mday=5;
tt.tm_hour=0;
tt.tm_min=0;
tt.tm_sec=0;
t1= mktime(&tt);
for (int i=0; i< 365; i++ ) {
tt.tm_year= 2030-1900;
tt.tm_mon=0;
tt.tm_mday=i;
tt.tm_hour=0;
tt.tm_min=0;
tt.tm_sec=0;
t2= mktime(&tt);
printf("%s", ctime(&t2));
dwDiffTime= difftime(t2,t1) / (60*60*24);
printf("起第 %d 天 ", dwDiffTime);
Lunar2Solar(sLunar, dwDiffTime);
puts(sLunar);
}
getch();
return 0;
}
一个显示
农历
的日历小
程序
这是个包含
农历
的日历
程序
,日历下方会显示传统与国际节假日。这个
程序
通过Conky把结果显示在我的桌面上,如果要用于其他用途,请自行修改
程序
。
程序
需要一个
公历
对照
农历
的文本文件,请修改
程序
中对应路径。 #!/usr/bin/
perl
use strict; use warnings; my $today=`/bin/date '+%F'`; my ($...
男人睡前的三宜三忌
男人睡前的三宜三忌 睡眠是健康的巨大源泉。男子怎样才能睡得好呢? 首先,要养成按时入睡和起床的良好习惯,遵循睡眠与觉醒相交替的客观规律。这样,就能稳定睡眠,避免引起大脑皮层细胞的过度疲劳。严格的作息制度对于象睡眠和觉醒这类生理过程来说意义也是很大的。严格遵守作息时间能使我们的睡眠和觉醒过程——甚至有可能象条件反射那样——来得更自然,进行得更为深刻。另外,睡前不要进行紧张的脑力劳
Python粒子群LSTM冷机负荷预测 搜参对比出图
Python粒子群LSTM冷机负荷预测 搜参对比出图 用粒子群搜索 LSTM 隐层与学习率,对冷水机组小时冷负荷预测并对比基线 LSTM,输出 RMSE 与预测曲线。 功能: · 合成冷机冷负荷小时序列 · PSO 搜 hidden/lr · 对比基线 LSTM · pso_trace.csv 迭代记录 · forecast.png+metrics.csv · 打包时预跑 output/preview 压缩包含可运行源码、依赖与说明,按 README 安装后即可复现。
面向光储充一体化社区电动汽车有序充电双层优化策略研究(Matlab代码实现)
内容概要:本文针对光储充一体化社区中电动汽车的有序充电问题,提出并实现了一种双层优化策略,旨在协调系统经济性与用户充电体验。该策略构建主从博弈模型,上层以电网侧经济运行目标优化动态充电定价,下层以用户侧满意度最大化为目标优化个体充电行为,通过Matlab代码进行建模与仿真验证。研究综合考虑光伏发电的不确定性、储能系统的充放电特性以及电动汽车充电需
求
的时空分布特征,建立了完整的数学优化模型,并设计相应的
求
解算法,有效实现了削峰填谷、降低用户成本、提高可再生能源就地消纳率等多重目标,为新型配电系统的协同优化提供了可行方案。; 适合人群:具备一定电力系统基础知识、优化理论背景及Matlab编程能力的研究生、科研人员,以及从事新能源接入、智能电网、电动汽车调度等相关领域的工程技术人员。; 使用场景及目标:①深入理解光储充一体化系统中多主体互动机制与有序充电调度原理;②掌握双层优化模型(特别是主从博弈)的构建思路与
求
解方法;③学习如何利用Matlab实现复杂能源系统的仿真建模与数据分析,服务于科研论文撰写、课题研究或实际工程项目开发。; 阅读建议:此资源强调理论建模与代码实践的紧密结合,建议读者在阅读过程中对照文档中的模型推导步骤,逐行分析Matlab代码实现逻辑,动手复现仿真结果,深入理解变量设置、约束条件处理及算法迭代过程,从而提升独立解决综合能源系统优化问题的能力。
CGI
2,203
社区成员
4,518
社区内容
发帖
与我相关
我的任务
CGI
Web 开发 CGI
复制链接
扫一扫
分享
社区描述
Web 开发 CGI
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章