有两个dateTimePicker 第一个要比当前系统时间早~另一个最大是当前系统时间~ 也可以比当前系统时间早~ 我应该如何去比较时间的大小呢 比如 我如何比较 2008-3-6 与 2008-6-1这两个时间哪个时间早呢 还有2008年3月6日和2008年6月1日
开始我用的substring()可是当2008-3-6变成2008-10-11就不行了`长度就变了` 我应该怎么去弄呢 在线等`~
开始我用的substring()可是当2008-3-6变成2008-10-11就不行了`长度就变了` 我应该怎么去弄呢 在线等`~
/// 定义方法,得到当前时间,并显示
/// </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);
}
}
TimeSpan ts=dateTimePicker1.Value-DateTime.Now.Date;
只比日期的话,就看ts.TotalDays是正还是负或是0,这样就行了。
if (rq.TotalDays> 1)
{
MessageBox.Show("开始日期不能早于当前日期");
}
else if (rq.TotalDays<1)
{
MessageBox.Show("可用");
}
这里面怎么也不是==0 就算我选择了当天也不行`是0.0......这些` 不过判断1还是行的
第一句改成:TimeSpan rq = (this.dateTimePicker1.Value.Date - DateTime.Now.Date);//表示两个时间都只取日期部分
用rq.TotalDays跟0比较
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
{
// 否则,就是更迟
}
string strDate2 = "2008-10-12"; // 要比较的日期字符串2
if (DateTime.Parse(strDate1) < DateTime.Parse(strDate2)) // DateTime 型的变量是可以直接比较大小的
{
// strDate1 比 strDate2 的日期早
}
else
{
// 否则,就是相等或更迟
}
如果两个日期都是 DateTimePicker 控件的值,就更简单的,直接比较它们的 Value 可以了:
if (dateTimePicker1.Value < dateTimePicker2.Value)
{
// dateTimePicker1 代表的日期更早
}
* wuyi8808直接使用 日期类型 DataTime,TimeSpan,进行日期类型比较是最简单的,如果你原因进行 string 的比较,也没有办法。