打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
WinForm(C#)倒计时(年月日时分秒)

一个朋友提到这个问题,就随手写了一个,本以为很容易,却写了差不多半个小时,关键是年月的判断,现把代码贴出来供需要的朋友参考,也希望能看到大家的计算方法,先在WinForm窗体上放一个label控件(ID为lblShow) 和一个Timer控件(ID为timerMain),后台代码如下:

    public partial class FormTime : Form
    {
        public FormTime()
        {
            InitializeComponent();
        }

        private void FormTime_Load(object sender, EventArgs e)
        {
            timerMain.Enabled = true;
            timerMain.Interval = 1000;
            timerMain.Start();
        }

        private void timerMain_Tick(object sender, EventArgs e)
        {
            DateTime observeTime = DateTime.Parse("2023-11-22 22:45:30");//倒计时日期
            DateTime now = DateTime.Now;    //当前时间
            TimeSpan ts = observeTime.Subtract(now);    //两个时间之差
            StringBuilder result=new StringBuilder();   //存放结果
            int year=observeTime.Year - now.Year;       //得到相差的年
            int month = observeTime.Month - now.Month;  //得到相差的月
            int day = observeTime.Day - now.Day;        //得到相差的日

            int hmh=(observeTime.Hour-now.Hour)*3600+(observeTime.Minute-now.Minute)*60+(observeTime.Second-now.Second);

            //如果时分秒比现在的时间晚
            if(hmh<=0)
            {
                //向日借一
                day--;
                if((day<=0&&month>0)||(day<=0&&year>0))
                {
                    //如果天数小于0向月借一
                    day=GetDay(now.Year, now.Month)- now.Day + observeTime.Day;
                    month--;
                    if(month<0&&year>0)
                    {
                        //如果月数小于0,向年借一,同时把月专为正数
                        month += 12;
                        year--;
                    }
                }
            }


            //如果天数小于0向月借一
            if ((day < 0 && month > 0) || (day < 0 && year > 0))
            {
                day = GetDay(now.Year, now.Month) - now.Day + observeTime.Day;
                month--;
                if (month < 0 && year > 0)
                {
                    //如果月数小于0,向年借一,同时把月专为正数
                    month += 12;
                    year--;
                }
            }

            //如果月数小于0,向年借一,同时把月专为正数
            if (month < 0 && year > 0)
            {
                month += 12;
                year--;
            }

            if (year<0||(year == 0 && month < 0)||(year == 0 && month==0&&day<0))
            {
                lblShow.Text = "已超过日期";
                return;
            }

            if (year> 0)
            {
                result.Append(year+ "");
            }
            if (month> 0)
            {
                result.Append(month+ "");
            }
            if (day> 0)
            {
                result.Append(day+ "");
            }
            if (ts.Hours > 0)
            {
                result.Append(ts.Hours + "");
            }
            if (ts.Minutes > 0)
            {
                result.Append(ts.Minutes + "");
            }
            if (ts.Seconds > 0)
            {
                result.Append(ts.Seconds + "");
            }
            if(result.Length==0)
            {
                result.Append("已超过日期");
            }
            lblShow.Text = result.ToString();
        }

        //输入月份后获得该月天数
        private int GetDay(int year, int month)
        {
            int result = 31;
            switch (month)                           
            {
                case 4:
                case 6:
                case 9:
                case 11:
                    result = 30;
                    break;
                case 2:
                    if ((year % 100 != 0) && (year% 4 == 0) || (year% 400 == 0))
                    {
                        result = 29;
                    }
                    else
                    {
                        result = 28;
                    }
                    break;
            }
            return result;
        }
    }

 

 效果图:

 

转自http://www.cnblogs.com/artwl/archive/2010/11/22/1884886.html

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
从NSDate获取年月日时分秒
通过日期生成星期几
王子主图画线的公式表达
让Excel帮你记住朋友的生日
EXCEL常用函数介绍7
求解excel提醒涵数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服