C++C#输出阳历万年历
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);
原创文章,作者:xianfajushi的博客,如若转载,请注明出处:https://www.zengqueling.com/cc%e8%be%93%e5%87%ba%e9%98%b3%e5%8e%86%e4%b8%87%e5%b9%b4%e5%8e%86/