dataGridView里判断时间是今天则只显示时分秒,否则只显示日期怎么做 if (Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value== DateTime.Now.Date) { }里面怎么写,在线等,有答案马上结贴给分,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那你这一列最好用 String 类型的。然后日期用前几位比较,比如是 "yyyy/MM/dd HH:mm:ss"就比较.SubString(0, 10) == DateTime.Now.ToString("yyyy/MM/dd") 你的代码不对吧,时间不能直接比DateTime dt=Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);TimeSpan ts=dt-DateTime.Now.Date;if(ts.days==0){dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=datetime.now.tostring("hh:mm:ss");}else{dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=dt.tostring("yyyy-MM-dd");}注意大小写,我都写成小写了 DateTime time1=Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);DateTime time2=DateTime.Now;string showStr="";showStr=time1.ToShortDateString()==time2.ToShortDateString()?time1.ToString("hh:mm:ss"):time1.ToString("yyyy-MM-dd"); 2楼,我就是按照你的思路做的,但好像问题出在dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = hjshijian.ToString("hh:mm:ss");这句话 当前线程处于堆栈溢出状态,因此无法计算表达式的值。我是把这个判断放在 private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)里面的跟踪时发现一旦执行这个就重新回到这个函数了 CellFormatting在这个事件中是对的,你有没有判断是哪一列啊如if(e.ColumnIndex==2)这个一定要不行你把这块代码贴出来 有的,是这句话if (dataGridView1.Columns[e.ColumnIndex].Name == "shijian") private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { if (dataGridView1.Columns[e.ColumnIndex].Name == "shijian") { if (Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value) != "") { DateTime hjshijian = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value); if (hjshijian <= DateTime.Now.AddHours(1)) { if (hjshijian <= DateTime.Now.AddHours(0.5)) { dataGridView1.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red; } else { dataGridView1.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Blue; } } else { dataGridView1.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Black; } } } DateTime hjsj = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value); TimeSpan bj = hjsj - DateTime.Now.Date; if (bj.Days == 0) { dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = hjsj.ToString("hh:mm:ss"); } else { dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = hjsj.ToString("yyyy-MM-dd"); } }如果不加这个判断是没有问题的,一小时以内蓝色,半小时红色,其他黑色 最好还是用e.CellIndex索引判断,名字有时会和我们想的不一样。DateTime hjsj = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value); TimeSpan bj = hjsj - DateTime.Now.Date; if (bj.Days == 0) { dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = hjsj.ToString("hh:mm:ss"); } else { dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = hjsj.ToString("yyyy-MM-dd"); }这块代码你没有放到判断中啊!是对同一列的处理吧 DateTime dt2 = Convert.ToDateTime("2011-4-29 11:11:11");//代表gridview的值 DateTime dt1 = DateTime.Now; TimeSpan ts = dt2.Date - dt1.Date; if (ts.Days==0) { this.lbl2.Text = dt2.ToString("hh:mm:ss"); } else { this.lbl2.Text = dt2.ToString("yyyy-MM-dd"); }lbl2代表的是gridview中显示的列 查看了一下,系统自动设定格式是这样一句话dataGridViewCellStyle3.Format = "d";于是将判断改为: DateTime hjsj = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value); TimeSpan bj = hjsj - DateTime.Now.Date; if (bj.Days == 0) { DataGridViewCellStyle hjStyle = new DataGridViewCellStyle(); hjStyle.Format = "t"; dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style = hjStyle; }成功 net 2005 irisskin2使用后tooltip效果弹不出来了 求帮助 远程调用outlook数据库问题 请教大哥:这程序写得太难看,如何取消goto却能实现同样的功能? 新手,请教~~~ C# winform 如何在C#代码中添加javascript代码呢? 有没有方法可以获得服务器当前的.net framework版本号(1.0 or 1.1)谢谢..... 更新ORACLE数据库,不能更新,不知到原因 威客系统大家有感兴趣的吗? 怎么打印datagrid中的内容? 用panel打印条码太模糊 C# 枚举类型转换问题
就比较.SubString(0, 10) == DateTime.Now.ToString("yyyy/MM/dd")
TimeSpan ts=dt-DateTime.Now.Date;if(ts.days==0)
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=datetime.now.tostring("hh:mm:ss");
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=dt.tostring("yyyy-MM-dd");
}注意大小写,我都写成小写了
DateTime time1=Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
DateTime time2=DateTime.Now;
string showStr="";
showStr=time1.ToShortDateString()==time2.ToShortDateString()?time1.ToString("hh:mm:ss"):time1.ToString("yyyy-MM-dd");
我是把这个判断放在
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
里面的
跟踪时发现一旦执行这个就重新回到这个函数了
如
if(e.ColumnIndex==2)
这个一定要不行你把这块代码贴出来
if (dataGridView1.Columns[e.ColumnIndex].Name == "shijian")
{
if (dataGridView1.Columns[e.ColumnIndex].Name == "shijian")
{
if (Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value) != "")
{
DateTime hjshijian = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value); if (hjshijian <= DateTime.Now.AddHours(1))
{
if (hjshijian <= DateTime.Now.AddHours(0.5))
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
}
else
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Blue;
}
}
else
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Black;
}
}
}
DateTime hjsj = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
TimeSpan bj = hjsj - DateTime.Now.Date;
if (bj.Days == 0)
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = hjsj.ToString("hh:mm:ss");
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = hjsj.ToString("yyyy-MM-dd");
}
}
如果不加这个判断是没有问题的,一小时以内蓝色,半小时红色,其他黑色
TimeSpan bj = hjsj - DateTime.Now.Date;
if (bj.Days == 0)
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = hjsj.ToString("hh:mm:ss");
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = hjsj.ToString("yyyy-MM-dd");
}这块代码你没有放到判断中啊!是对同一列的处理吧
DateTime dt1 = DateTime.Now;
TimeSpan ts = dt2.Date - dt1.Date; if (ts.Days==0)
{
this.lbl2.Text = dt2.ToString("hh:mm:ss");
}
else
{
this.lbl2.Text = dt2.ToString("yyyy-MM-dd");
}
lbl2代表的是gridview中显示的列
dataGridViewCellStyle3.Format = "d";
于是将判断改为:
DateTime hjsj = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
TimeSpan bj = hjsj - DateTime.Now.Date;
if (bj.Days == 0)
{
DataGridViewCellStyle hjStyle = new DataGridViewCellStyle();
hjStyle.Format = "t";
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style = hjStyle;
}
成功