有两个dateTimePicker  第一个要比当前系统时间早~另一个最大是当前系统时间~  也可以比当前系统时间早~  我应该如何去比较时间的大小呢   比如  我如何比较 2008-3-6 与 2008-6-1这两个时间哪个时间早呢   还有2008年3月6日和2008年6月1日
开始我用的substring()可是当2008-3-6变成2008-10-11就不行了`长度就变了` 我应该怎么去弄呢  在线等`~

解决方案 »

  1.   

    还是沿用你的substring的方法,不过是要先吧 年月日分别拆开,对月和日进行处理,不够10的话在前面+0然后将年月日以这种形式呈现20080306或20080601或20081011这样就可以比较int类型的数字了~#region 自定义方法部分,供控件事件调用        /// <summary>
            /// 定义方法,得到当前时间,并显示
            /// </summary>
            private void GetNowTime()
            {
                try
                {
                    // 定义时间变量 得到当前时间并显示在相应控件中
                    DateTime dt = new DateTime();
                    dt = DateTime.Now;
                    int intYear = dt.Year - 1;
                    int intMonth = dt.Month;
                    int intDay = dt.Day;
                    int intHour = dt.Hour;
                    int intMin = dt.Minute;
                    int intSecond = dt.Second;
                    string strNowTime = intYear + "年" + JudgeTime(intMonth) + "月" + JudgeTime(intDay) + "日   " + JudgeTime(intHour) + ":" + JudgeTime(intMin) + ":" + JudgeTime(intSecond);                LabNowTime.Text = strNowTime;   
                }            catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }/// <summary>
            /// 定义方法,如果年月日时分秒的为个位数,则在其前面加0
            /// </summary>
            /// <param name="intTimeInfo">接到的时间变量</param>
            /// <returns>返回给调用者处理后的时间数值</returns>
            private string JudgeTime(int intTimeInfo)
            {
                string strTime = string.Empty;
                if (intTimeInfo < 10)
                    strTime = "0" + intTimeInfo.ToString();
                else
                    strTime = intTimeInfo.ToString();
                return strTime;
            }               /// <summary>
            /// 当查询按钮被点击时,执行匹配条件的查询
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void BtnSearch_Click(object sender, EventArgs e)
            {
                try
                {
                    if (RadBtnBetween.Checked == true)
                    {
                        // 定义变量,将选中的区间日期装换成整形变量并比较大小
                        int intFirst = int.Parse(LabFirstTime.Text.Trim());
                        int intSecond = int.Parse(LabSecondTime.Text.Trim());                    // 如果起始时间晚于截止时间,则提示用户输入有误
                        if (intFirst - intSecond > 0)
                        {
                            MessageBox.Show("起始日期不能大于结束日期");
                            return;
                        }                    // 调用方法
                        // 执行检索
                        GetData();
                    }                // 如果条件符合则进行信息检索
                    else
                    {
                        // 调用方法
                        // 执行检索
                        GetData();
                    }
                }            catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            /// <summary>
            /// 定义方法,当点击月历控件是,显示点击的内容在TextBox控件中
            /// </summary>
            /// <param name="monthCal">月历控件的实例化</param>
            /// <param name="e">获得当前事件对象的实例化</param>
            /// <param name="tb">要显示所选日期的实例化</param>
            /// <param name="lb">存储所选日期的控件实例化</param>
            private void GetClickDate(MonthCalendar monthCal, DateRangeEventArgs e, TextBox tb,Label lb)
            {
                try
                {
                    // 将用户在MonthCalendar上点击的坐标转换程用户区坐标,并根据坐标获得点击类型
                    string s = Convert.ToString(monthCal.HitTest(this.PointToClient(MonthCalendar.MousePosition)).HitArea);                // 如果用户点中了日期则设置并退出
                    if (s.Equals("Nowhere"))
                    {
                        // 定义string类型变量,记录选中的日期的各个值
                        int intYear = Convert.ToInt32(e.Start.Year) - 1;
                        int intMonth = Convert.ToInt32(e.Start.Month);
                        int intDay = Convert.ToInt32(e.Start.Day);                    // 如果选中日期就自动隐藏日历控件
                        monthCal.Hide();                    // 将选定的日期显示在TextBox控件中
                        tb.Text = intYear + "-" + intMonth + "-" + intDay;                    lb.Text = intYear.ToString() + intMonth.ToString() + intDay.ToString();
                    }
                }            catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
      

  2.   

    2008-3-6   2008-6-1这样的  我想的是先声明一个变量~ 它用来存放修改后的日期   我想把日期中的”-“去掉`split不会使`  郁闷`  如果用这样的思路来写`  我应该用什么方法去掉“-”呢  2楼感觉太麻烦了 不过很好用,请大家帮帮忙   
      

  3.   

    直接拿dateTimePicker1.Value出来与DateTime.Now.Date来比较就行了。
    TimeSpan ts=dateTimePicker1.Value-DateTime.Now.Date;
    只比日期的话,就看ts.TotalDays是正还是负或是0,这样就行了。
      

  4.   

    楼上的行了`能判断出来`  只是我跟踪了一下发现了一个问题            TimeSpan rq = (this.dateTimePicker1.Value - DateTime.Now.Date);
                if (rq.TotalDays> 1)
                {
                     MessageBox.Show("开始日期不能早于当前日期");  
                }
                else if (rq.TotalDays<1)
                {
                     MessageBox.Show("可用");
                 }
    这里面怎么也不是==0  就算我选择了当天也不行`是0.0......这些`  不过判断1还是行的
      

  5.   


    第一句改成:TimeSpan rq = (this.dateTimePicker1.Value.Date - DateTime.Now.Date);//表示两个时间都只取日期部分
    用rq.TotalDays跟0比较
      

  6.   

    如果dateTimePicker 中的值要跟string 类型的2008-9-11  比较  要咋比较啊 判断哪个更早一点  在插入数据库值的时候 就用2008-9-11这样的格式  而不用2008-09-11这样的格式  请教大虾
      

  7.   


    string strDate = "2008-9-11";             // 要比较的日期字符串
    DateTime time1 = dateTimePicker.Value;    // DateTimePicker 控件中的值,本身已经是 DateTime 型的变量了
    DateTime time2 = DateTime.Parse(strDate); // 把日期字符串解析为 DateTime 型的变量
    if (time1 < time2)   // DateTime 型的变量是可以直接比较的
    {
      // dateTimePicker.Value 比 strDate 的日期早
    }
    else if (time1 == time2)
    {
      // 两个时间相同
    }
    else
    {
      // 否则,就是更迟
    }
      

  8.   

    如果要比较两个日期字符串所表示的日期的迟或早,也是把它们转换为 DateTime 型的变量来比较:string strDate1 = "2008-9-20";             // 要比较的日期字符串1
    string strDate2 = "2008-10-12";            // 要比较的日期字符串2
    if (DateTime.Parse(strDate1) < DateTime.Parse(strDate2))   // DateTime 型的变量是可以直接比较大小的
    {
      // strDate1 比 strDate2 的日期早
    }
    else
    {
      // 否则,就是相等或更迟
    }
      

  9.   


    如果两个日期都是 DateTimePicker 控件的值,就更简单的,直接比较它们的 Value 可以了:
    if (dateTimePicker1.Value < dateTimePicker2.Value)
    {
      // dateTimePicker1 代表的日期更早
    }
      

  10.   

    看了半天真是着急啊,终于看到正确的答案了。
        * wuyi8808直接使用 日期类型 DataTime,TimeSpan,进行日期类型比较是最简单的,如果你原因进行 string 的比较,也没有办法。