C#實(shí)現(xiàn)動(dòng)態(tài)數(shù)字時(shí)鐘和日歷
本文實(shí)例為大家分享了C#實(shí)現(xiàn)動(dòng)態(tài)數(shù)字時(shí)鐘和日歷的具體代碼,供大家參考,具體內(nèi)容如下
實(shí)現(xiàn)如下圖所示的簡(jiǎn)易時(shí)鐘和日歷,要求顯示公歷日期、時(shí)間、星期、農(nóng)歷日期。

首先新建一個(gè)ChineseCanlendar類用于實(shí)現(xiàn)和農(nóng)歷相關(guān)的操作:
【ChineseCanlendar.cs】
/*
?* 作者:JeronZhou
?* 時(shí)間:2021-11-01
?* 功能:動(dòng)態(tài)數(shù)字時(shí)鐘和日歷
?*/
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("年份無(wú)效!");
? ? ? ? }
? ? ? ? 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("月份無(wú)效!");
? ? ? ? }
? ? ? ? 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("無(wú)效日期!");
? ? ? ? }
? ? ? ? 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));
? ? ? ? }
? ? }
}【窗體設(shè)計(jì)】
從上到下設(shè)置三個(gè)標(biāo)簽,并添加背景顏色,為了使效果更佳,最好將窗口全部填滿:

【MainForm.cs】
/*
?* 作者:JeronZhou
?* 時(shí)間:2021-11-01
?* 功能:動(dòng)態(tài)數(shù)字時(shí)鐘和日歷
?*/
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
?* 時(shí)間:2021-11-01
?* 功能:動(dòng)態(tài)數(shù)字時(shí)鐘和日歷
?*/
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());
?? ??? ?}
?? ?}
}【運(yùn)行結(jié)果】

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#中datagridview使用tooltip控件顯示單元格內(nèi)容的方法
這篇文章主要介紹了C#中datagridview使用tooltip控件顯示單元格內(nèi)容的方法,實(shí)例分析了C#控件的相關(guān)使用技巧,需要的朋友可以參考下2016-06-06
C#代碼實(shí)現(xiàn)設(shè)置Word表格的列寬
設(shè)置 Word 表格的列寬對(duì)于提升文檔的可讀性和整體美觀度至關(guān)重要,本文將介紹如何在 C# 項(xiàng)目中用代碼設(shè)置 Word 表格的列寬,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2026-06-06
DevExpress實(shí)現(xiàn)GridControl顯示Gif動(dòng)畫的方法
這篇文章主要介紹了DevExpress實(shí)現(xiàn)GridControl顯示Gif動(dòng)畫的方法,這是比較實(shí)用的方法,需要的朋友可以參考下2014-08-08
C# Windows API應(yīng)用之基于FlashWindowEx實(shí)現(xiàn)窗口閃爍的方法
這篇文章主要介紹了C# Windows API應(yīng)用之基于FlashWindowEx實(shí)現(xiàn)窗口閃爍的方法,結(jié)合實(shí)例形式分析了Windows API函數(shù)FlashWindowEx的功能、定義及實(shí)現(xiàn)窗口閃爍的相關(guān)技巧,需要的朋友可以參考下2016-08-08
Winform窗體縮放下使用剪切板功能出現(xiàn)頁(yè)面閃動(dòng)解決分析
這篇文章主要介紹了Winform窗體縮放下使用剪切板功能出現(xiàn)頁(yè)面閃動(dòng)解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
C#高效實(shí)現(xiàn)并行與并發(fā)的最佳實(shí)踐
在現(xiàn)代多核處理器環(huán)境下,合理利用并行與并發(fā)是提升吞吐量的關(guān)鍵,本文通過實(shí)戰(zhàn)案例展示 C# 中并行化的最佳實(shí)踐(支持 .NET 6+),涵蓋 CPU 密集型與 I/O 密集型場(chǎng)景,需要的朋友可以參考下2025-07-07

