C# 定时作业取固定服务器的时间格式

WINDOWS服务器的系统时间格式,有2种:24小时和12小时。

12小时格式:  7:30

24小时格式: 07:30

服务器上不固定的使用这两种格式中的哪一种,如果直接用System.DateTime.Now来取,得到的格式就同服务器格式相同,是不固定的。

但在定时程序代码的使用中,时间格式会转成字符串,而字符串对比,只能明确一种格式,所以在取时间时,

我固定使用格式化24小时: string now = DateTime.Now.ToString("HH:mm");    

这样我的时间点字符串就都是 HH:mm (07:30) 这种格式了。

 private void m1()
        {
            while (true)
            {
                try
                {
                    Thread.Sleep(10 * 1000); //10秒对比一次系统时间
                    string now = DateTime.Now.ToString("HH:mm");     //得到现在的时间,注意,两个HH,是24小时,前面会填0,系统时间被格式为01:12而不是1:12。后面对比就不会错误了!
                                      
                    toolStripStatusLabel1.Text = "Server live time: "+ now;

                    //时间点任务
                    if (now.Equals("23:50")) //时间点格式 01:12
                    {
                        toolStripButton1.PerformClick();
                        toolStripButton2.PerformClick();                
                        Thread.Sleep(1000 * 60);//延迟一分钟,避免一分钟内发多次
                    }


                    //时间点任务
                    if (now.Equals("23:55")) //时间点格式 01:12
                    {
                        toolStripButton5.PerformClick();//一天中最后的时间检查报告发管理员
                        Thread.Sleep(1000 * 60);//延迟一分钟,避免一分钟内发多次
                    }


                    //每小时取PO服务器日志
                    if (now.Equals("00:59") || now.Equals("01:59") || now.Equals("02:59") || now.Equals("03:59") || now.Equals("04:59") ||
                        now.Equals("05:59") || now.Equals("06:59") || now.Equals("07:59") || now.Equals("08:59") || now.Equals("09:59") ||
                        now.Equals("10:59") || now.Equals("11:59") || now.Equals("12:59") || now.Equals("13:59") || now.Equals("14:59") ||
                        now.Equals("15:59") || now.Equals("16:59") || now.Equals("17:59") || now.Equals("18:59") || now.Equals("19:59") ||
                        now.Equals("20:59") || now.Equals("21:59") || now.Equals("22:59") || now.Equals("23:59"))
                    {

                        DateTime NowDT = DateTime.Now;//先取当前时间点(最后一分钟这个时间点)
                        Thread.Sleep(60*1000);//延迟一分钟后,进入下一个小时里程序工作,取上一个小时的完整的全部数据
                        EveryHourReadLog(NowDT);
                      
                    }

                }

                catch (Exception e1)
                {                 
                    ps(listBox1, e1.Message);
                }
            }
        }

猜你喜欢

转载自blog.csdn.net/ot512csdn/article/details/107891638