作者在 2020-02-02 06:23:03 发布以下内容
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) == 0 && (N % 100) > 0) || (N % 400) == 0) ? true : false) ? 29 : 28)
: (((Y <= 7 && (Y % 2) > 0) || (Y > 7 && (Y % 2) == 0)) ? 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();
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;
}
using System.Globalization;//农历
static string 月历加载()
{
System.Globalization.ChineseLunisolarCalendar 微软农历 = new System.Globalization.ChineseLunisolarCalendar();
int 天 = 微软农历.GetDayOfMonth(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day)),
月 = 微软农历.GetMonth(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day)),
年 = 微软农历.GetSexagenaryYear(DateTime.Now);
return "月历:" + " 甲乙丙丁戊己庚辛壬癸"[微软农历.GetCelestialStem(年)]
+ " 鼠牛虎兔龙蛇马羊猴鸡狗猪"[微软农历.GetTerrestrialBranch(年)] + "年"
+ " 正二三四五六七八九十冬腊"[月] + (天 > 10 ? "月" : "月初") + (" 十廿仨"[天 / 10]).ToString().Replace(" ", "") + " 一二三四五六七八九"[天 % 10];
}
static void 输出万年历(int 年, int 月, int 日)
{
int r = 1, z = r, nn = 年, yy = 月; string aa = " :::: ";
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} {4}\n天 一 二 三 四 五 六\n:: ", 年, 月, 日, "天一二三四五六"[(z + 日 - 1) % 7], 月历加载(年, 月, 日));
while (r <= nn)
if (yy >= z)
{
if (r <= 返回月的天数(年, 月)) aa += 月历加载(年, 月, r).Substring(8, 2) + ((++yy % 7) > 0 ? " " : " \n");
Console.Write("{0}{1}{2}", 补零(r), (r++).ToString(), ((yy % 7) > 0 ? " " : " "));
if (aa.Contains("\n")) { Console.Write("{0}", aa = aa.Replace(" ", " ")); aa = " "; }
}
else
{
if (r <= 返回月的天数(年, 月)) aa += (r > 1 ? 月历加载(年, 月, r).Substring(8, 2) : "::::") + ((yy % 7) > 0 ? " " : " \n");
Console.Write("{0}{1}{2}", (r > 1 ? 补零(r) : ""), (r > 1 ? (r++).ToString() : "::"), ((++yy % 7) > 0 ? " " : " \n"));
if (aa.Contains("\n")) { Console.Write("{0}", aa = aa.Replace(" ", " ")); aa = " "; }
}
}
Stopwatch 总运行时间 = Stopwatch.StartNew();
Console.WriteLine("\n时间: {0}周期结束。", 总运行时间.ElapsedTicks);