C# System.Threading.Timer 案例(一)

C# System.Threading.Timer 案例(一)

環境 : NET Framework 4.5.2

C# System.Threading.Timer
winform 版 案例

創建一個項目,添加兩個label空間

按F7,或右擊,查看代碼

查看代碼

using Timer = System.Threading.Timer;//引用

代碼圖1

寫一個時間控制的方法

寫一個使勁按控制的方法

代碼:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Timer = System.Threading.Timer;//引用

namespace TimeRefresh
{
    public partial class Form1 : Form
    {

        private Timer _tTimeUI;
        public Form1()
        {
            InitializeComponent();

            _tTimeUI = new Timer(obj => TimeUI(), null, 1 * 1000, 1 * 1000);
        }

        public void TimeUI()
        {
            DateTime nowDatetime = DateTime.Now;
            lbl_date.Text = GetCurrentYMD(nowDatetime);
            lbl_time.Text = $"{GetCurrentHMS(nowDatetime)}  {GetCurrentWeekDay(nowDatetime)}";

        }



        /// <summary>
        /// 獲取時分秒,
        /// 默認是24小時制,如果hourFormat=12就是12小時,輸入其他數依然是24小時
        /// </summary>
        /// <returns>時分秒字符串</returns>
        public string GetCurrentHMS(DateTime CurrentDateTime, int hourFormat = 24, bool isRefreshTime = false)
        {
            if (hourFormat == 12)
            {
                return CurrentDateTime.ToString("hh:mm:ss");
            }
            else
            {
                return CurrentDateTime.ToString("HH:mm:ss");
            }

        }


        /// <summary>
        /// 獲取年月日
        /// </summary>
        /// <returns>年月日字符串</returns>
        public string GetCurrentYMD(DateTime CurrentDateTime, bool isRefreshTime = false)
        {
            return CurrentDateTime.ToString("yyyy年MM月dd日");
        }


        /// <summary>
        /// 獲取日期
        /// </summary>
        public string GetCurrentWeekDay(DateTime CurrentDateTime, bool isRefreshTime = false)
        {
            return CaculateWeekDay(CurrentDateTime.Year, CurrentDateTime.Month, CurrentDateTime.Day);
        }

        /// <summary>
        ///     基姆拉爾森計算公式計算日期
        /// </summary>
        /// <param name="y">年</param>
        /// <param name="m">月</param>
        /// <param name="d">日</param>
        /// <returns>星期幾</returns>
        protected string CaculateWeekDay(int y, int m, int d)
        {
            if (m == 1 || m == 2)
            {
                m += 12;
                y--; //把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10則換算成:2003-13-10來代入公式計算。
            }

            var week = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
            var weekstr = "";
            switch (week)
            {
                case 0:
                    weekstr = "星期一";
                    break;
                case 1:
                    weekstr = "星期二";
                    break;
                case 2:
                    weekstr = "星期三";
                    break;
                case 3:
                    weekstr = "星期四";
                    break;
                case 4:
                    weekstr = "星期五";
                    break;
                case 5:
                    weekstr = "星期六";
                    break;
                case 6:
                    weekstr = "星期日";
                    break;
            }

            return weekstr;
        }
    }
}


運行效果如下:

動態:
結果

靜態:結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章