日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C#實現動態數字時鐘和日歷_C#教程

作者:JeronZhou ? 更新時間: 2022-08-05 編程語言

本文實例為大家分享了C#實現動態數字時鐘和日歷的具體代碼,供大家參考,具體內容如下

實現如下圖所示的簡易時鐘和日歷,要求顯示公歷日期、時間、星期、農歷日期。

首先新建一個ChineseCanlendar類用于實現和農歷相關的操作:

【ChineseCanlendar.cs】

/*
?* 作者:JeronZhou
?* 時間:2021-11-01
?* 功能:動態數字時鐘和日歷
?*/

using System;
using System.Linq;
using System.Globalization;

namespace Test2_1
{
? ? static public class ChineseCanlendar
? ? {
? ? ? ? private static ChineseLunisolarCalendar ChineseCalendar = new ChineseLunisolarCalendar();
? ? ? ? private static string[] tg = { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" };
? ? ? ? private static string[] dz = { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" };
? ? ? ? private static string[] sx = { "鼠", "牛", "虎", "兔", "龍", "蛇", "馬", "羊", "猴", "雞", "狗", "豬" };
? ? ? ? public static string GetLunisolarYear(int year)
? ? ? ? {
? ? ? ? ? ? if (year > 3)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? int tgIndex = (year - 4) % 10;
? ? ? ? ? ? ? ? int dzIndex = (year - 4) % 12;
? ? ? ? ? ? ? ? return string.Concat(tg[tgIndex], dz[dzIndex], "[", sx[dzIndex], "]");
? ? ? ? ? ? }
? ? ? ? ? ? throw new ArgumentOutOfRangeException("年份無效!");
? ? ? ? }
? ? ? ? private static string[] months = { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二(臘)" };
? ? ? ? private static string[] days1 = { "初", "十", "廿", "三" };
? ? ? ? private static string[] days = { "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };
? ? ? ? public static string GetLunisolarMonth(int month)
? ? ? ? {
? ? ? ? ? ? if (month < 13 && month > 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? return months[month - 1];
? ? ? ? ? ? }
? ? ? ? ? ? throw new ArgumentOutOfRangeException("月份無效!");
? ? ? ? }
? ? ? ? public static string GetLunisolarDay(int day)
? ? ? ? {
? ? ? ? ? ? if (day > 0 && day < 32)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (day != 20 && day != 30)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? return string.Concat(days1[(day - 1) / 10], days[(day - 1) % 10]);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? return string.Concat(days[(day - 1) / 10], days1[1]);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? throw new ArgumentOutOfRangeException("無效日期!");
? ? ? ? }
? ? ? ? public static string GetChineseDateTime(DateTime datetime)
? ? ? ? {
? ? ? ? ? ? int year = ChineseCalendar.GetYear(datetime);
? ? ? ? ? ? int month = ChineseCalendar.GetMonth(datetime);
? ? ? ? ? ? int day = ChineseCalendar.GetDayOfMonth(datetime);
? ? ? ? ? ? int leapMonth = ChineseCalendar.GetLeapMonth(year);
? ? ? ? ? ? bool isleap = false;
? ? ? ? ? ? if (leapMonth > 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (leapMonth == month)
? ? ? ? ? ? ? ? { ? ?
? ? ? ? ? ? ? ? ? ? isleap = true;
? ? ? ? ? ? ? ? ? ? month--;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else if (month > leapMonth)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? month--;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return string.Concat(GetLunisolarYear(year), "年", isleap ? "閏" : string.Empty, GetLunisolarMonth(month), "月", GetLunisolarDay(day));
? ? ? ? }
? ? }
}

【窗體設計】

從上到下設置三個標簽,并添加背景顏色,為了使效果更佳,最好將窗口全部填滿:

【MainForm.cs】

/*
?* 作者:JeronZhou
?* 時間:2021-11-01
?* 功能:動態數字時鐘和日歷
?*/

using System;
using System.Linq;
using System.Windows.Forms;

namespace Test2_1
{
?? ?public partial class MainForm : Form
? ? {
? ? ? ? public MainForm()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? ? ? timer1.Start();
? ? ? ? }
?? ??? ?void Timer1Tick(object sender, EventArgs e)
?? ??? ?{
?? ? ? ? ? ?label1.Text = DateTime.Now.ToString();
?? ? ? ? ? ?switch(DateTime.Now.DayOfWeek.ToString())
?? ? ? ? ? ?{
?? ? ? ? ? ??? ?case "Monday":
?? ? ? ? ? ??? ??? ?label2.Text = "星期一"; break;
?? ? ? ? ? ??? ?case "Tuesday":
?? ? ? ? ? ??? ??? ?label2.Text = "星期二"; break;
?? ? ? ? ? ??? ?case "Wednesday":
?? ? ? ? ? ??? ??? ?label2.Text = "星期三"; break;
?? ? ? ? ? ??? ?case "Thursday":
?? ? ? ? ? ??? ??? ?label2.Text = "星期四"; break;
?? ? ? ? ? ??? ?case "Friday":
?? ? ? ? ? ??? ??? ?label2.Text = "星期五"; break;
?? ? ? ? ? ??? ?case "Saturday":
?? ? ? ? ? ??? ??? ?label2.Text = "星期六"; break;
?? ? ? ? ? ??? ?case "Sunday":
?? ? ? ? ? ??? ??? ?label2.Text = "星期日"; break;
?? ? ? ? ? ?}
? ? ? ? ? ? string GCDT = ChineseCanlendar.GetChineseDateTime(DateTime.Now);
? ? ? ? ? ? label3.Text = GCDT;
?? ??? ?}
? ? }
}

【Program.cs】

/*
?* 作者:JeronZhou
?* 時間:2021-11-01
?* 功能:動態數字時鐘和日歷
?*/

using System;
using System.Windows.Forms;

namespace Test2_1
{
?? ?internal sealed class Program
?? ?{
?? ??? ?[STAThread]
?? ??? ?private static void Main(string[] args)
?? ??? ?{
?? ??? ??? ?Application.EnableVisualStyles();
?? ??? ??? ?Application.SetCompatibleTextRenderingDefault(false);
?? ??? ??? ?Application.Run(new MainForm());
?? ??? ?}
?? ?}
}

【運行結果】

原文鏈接:https://blog.csdn.net/JeronZhou/article/details/121088302

欄目分類
最近更新