C++C#输出万年历C#含农历

农历在C++项目内调用DLL:在我的资源里面提供这个DLL文件下载

void 输出万年历(int 年, int 月, int 日)
{
	int r = 1, z = r, nn = 年, yy = 月;
	nn = 年; yy = 月;
	while (nn)if (--yy)z += 返回月的天数(nn, yy); else --nn, yy = 13;
	nn = 返回月的天数(年, 月); yy = 1;
	cout << 年 << "年" << 月 << "月" << 日 << "日今天星期 " << (z + 日 - 1) % 7 << "\n星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n.\t";
	while (r <= nn)
	if (yy >= (z %= 7))
		cout << (r > 9 ? "" : "0") << r++ << ((++yy % 7) ? "\t" : "\t\n");
	else
		cout << (r > 1 && r <= 9 ? "0" : "") << (r > 1 ? to_string(r++) : ".") << ((++yy % 7) ? "\t" : "\t\n");
	cout << endl;
}

#include <atltime.h>
	CTime time(CTime::GetCurrentTime());
	SYSTEMTIME timeDest;
	time.GetAsSystemTime(timeDest);
	输出万年历(timeDest.wYear, timeDest.wMonth, timeDest.wDay);
void 输出万年历(int 年, int 月, int 日)
{
	int r = 1, z = r, nn = 年, yy = 月;	string aa[] = { "日", "一", "二", "三", "四", "五", "六" };
	nn = 年; yy = 月;
	while (nn)if (--yy)z += 返回月的天数(nn, yy); else --nn, yy = 13;
	nn = 返回月的天数(年, 月); yy = 1;
	cout << 年 << "年" << 月 << "月" << 日 << "日今天星期" << aa[(z + 日 - 1) % 7] << "\n日\t一\t二\t三\t四\t五\t六\n.\t";
	while (r <= nn)
	if (yy >= (z %= 7))
		cout << (r > 9 ? "" : "0") << r++ << ((++yy % 7) ? "\t" : "\t\n");
	else
		cout << (r > 1 && r <= 9 ? "0" : "") << (r > 1 ? to_string(r++) : ".") << ((++yy % 7) ? "\t" : "\t\n");
	cout << endl;
}
static int 返回月的天数(int N, int Y)
{//缘由https://bbs.csdn.net/topics/395074486
	return (Y == 2 ? ((!(N % 4) && (N % 100)) || !(N % 400) ? 29 : 28) : (((Y <= 7 && Y % 2) || (Y>7 && !(Y % 2))) ? 31 : 30));
}
        static void 输出万年历(int 年, int 月, int 日)
        {
            int r = 1, z = r, nn = 年, yy = 月; string[] aa = { "日", "一", "二", "三", "四", "五", "六" };
            nn = 年; yy = 月;
            while (nn > 0) if (--yy > 0) z += 返回月的天数(nn, yy); else { --nn; yy = 13; }
            nn = 返回月的天数(年, 月); yy = 1; z %= 7;
            Console.Write("{0}年{1}月{2}日今天星期{3}\n日\t一\t二\t三\t四\t五\t六\n::\t", 年, 月, 日, "日一二三四五六"[(z + 日 - 1) % 7]);
            while (r <= nn)
                if (yy >= z)
                    Console.Write("{0}{1}{2}", (r > 9 ? "" : "0"), (r++).ToString(), ((++yy % 7) > 0 ? "\t" : "\t\n"));
                else
                    Console.Write("{0}{1}{2}", (r > 1 && r <= 9 ? "0" : ""), (r > 1 ? (r++).ToString() : "::"), ((++yy % 7) > 0 ? "\t" : "\t\n"));
        }


            输出万年历(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); Console.WriteLine();
        static string 月历加载(int 查年, int 查月, int 查日)
        {
            System.Globalization.ChineseLunisolarCalendar 微软农历 = new System.Globalization.ChineseLunisolarCalendar();
            int 天 = 微软农历.GetDayOfMonth(new DateTime(查年, 查月, 查日)),
            月 = 微软农历.GetMonth(new DateTime(查年, 查月, 查日)),
            年 = 微软农历.GetSexagenaryYear(DateTime.Now);//DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day
            if (月 >= DateTime.Now.Month) --月;
            return "月历:" + " 甲乙丙丁戊己庚辛壬癸"[微软农历.GetCelestialStem(年)]
                            + " 鼠牛虎兔龙蛇马羊猴鸡狗猪"[微软农历.GetTerrestrialBranch(年)] + "年"
                            + " 正二三四五六七八九十冬腊"[月] + (天 > 10 ? "月" : "月初") + (" 十廿仨"[天 / 10]).ToString().Replace(" ", "") + " 一二三四五六七八九"[天 % 10];
        }
        static void 输出万年历(int 年, int 月, int 日)
        {
            int r = 1, z = r, nn = 年, yy = 月;
            Func<int, string> 补零 = (int 数据) => { return (数据 > 9 ? "" : "0"); };
            while (nn > 0) if (--yy > 0) z += 返回月的天数(nn, yy); else { --nn; yy = 13; }
            nn = 返回月的天数(年, 月); yy = 1; z %= 7;
            Console.WriteLine("{0}", 月历加载());
            Console.Write("{0}年" + 补零(月) + "{1}月" + 补零(日) + "{2}日星期{3}\n日 一 二 三 四 五 六\n:: ", 年, 月, 日, "天一二三四五六"[(z + 日 - 1) % 7]);
            while (r <= nn)
                if (yy >= z)
                    Console.Write("{0}{1}{2}", 补零(r), (r++).ToString(), ((++yy % 7) > 0 ? " " : " \n"));
                else
                    Console.Write("{0}{1}{2}", (r > 1 ? 补零(r) : ""), (r > 1 ? (r++).ToString() : "::"), ((++yy % 7) > 0 ? " " : " \n"));
        }

            输出万年历(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            Console.WriteLine();
            Console.ReadLine();

 

void 输出万年历(int 年, int 月, int 日)
{
	int r = 1, z = r, nn = 年, yy = 月; string s = "日一二三四五六";
	while (nn)if (--yy)z += 返回月的天数(nn, yy); else --nn, yy = 13;
	nn = 返回月的天数(年, 月); yy = (z + 日 - 1) % 7 * 2;
	cout << 年 << "年" << 月 << "月" << 日 << "日" << ends << "星期"; cout.put(s[yy]).put(s[yy + 1]) << endl;
	cout << "日" << ends << "一" << ends << "二" << ends << "三" << ends << "四" << ends << "五" << ends << "六";
	yy = 0;
	while (r <= nn)
	if (yy >= (z %= 7))
	if (!(yy++ % 7))cout << endl << (r > 9 ? "" : "0") << r++ << ends; else cout << (r > 9 ? "" : "0") << r++ << ends;
	else
	if (!(yy++ % 7))cout << endl << "::" << ends; else cout << (r > 1 && r <= 9 ? "0" : "") << (r > 1 ? to_string(r++) : "::") << ends;
	cout << endl;
}
void 输出万年历(int 年, int 月, int 日)
{
	int r = 1, z = r, nn = 年, yy = 月;
	string 星期[] = { "日", "一", "二", "三", "四", "五", "六" };
	while (nn)if (--yy)z += 返回月的天数(nn, yy); else --nn, yy = 13;
	nn = 返回月的天数(年, 月); yy = 0;
	cout << 年 << "年" << (月 > 9 ? "" : "0") << 月 << "月" << (日 > 9 ? "" : "0") << 日 << "日星期" << 星期[(z + 日 - 1) % 7] << endl;
	while (yy < 7)cout << 星期[yy++] << ends; yy = 0;
	while (r <= nn)
		if (yy >= (z %= 7))
			if (!(yy++ % 7))cout << endl << (r > 9 ? "" : "0") << r++ << ends; else cout << (r > 9 ? "" : "0") << r++ << ends;
		else
			if (!(yy++ % 7))cout << endl << "::" << ends; else cout << (r > 1 && r <= 9 ? "0" : "") << (r > 1 ? to_string(r++) : "::") << ends;
	cout << endl;
}

回文年月日

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值