DataTable dt = SendSgsWebBll.GetSgsTaskTime(int.Parse(hidTaskId.Value));
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    String StartTime = dt.Rows[i]["StartTime"] + "";
                    String EndTime = dt.Rows[i]["EndTime"] + "";
                    //String a = StartTime.LastIndexOf("9", StartTime.Length)+"";
                    String Stime = StartTime.Substring(9, StartTime.Length - 9);
                    String Etime = EndTime.Substring(9, StartTime.Length - 9);
                    // DateTime strdatetime = new DateTime();                    dt.Rows[i]["StartTime"] = Stime;
                    dt.Rows[i]["EndTime"] = Etime;
                }
                DataView dv = dt.DefaultView;PS:
DataTable dt =SendSgsWebBll.GetSgsTaskTime(int.Parse(hidTaskId.Value));
此处返回的是 TaskId BusinessId StartTime EndTime 
此时,StartTime EndTime的格式 如 1900/1/1 00:00:00 1900/1/1 23:59:59
我想此处StartTime EndTime只显示时间 如 00:00:00 23:59:59
但此方法写完后 dt中会变成 2012/2/9 00:00:00 2012/2/9 23:59:59
求各位高手指导 

解决方案 »

  1.   

    你这个可以如下
    第一,直接substring取后面8个字符
    第二,转为datatime,然后ToString("hh:mm:ss")
      

  2.   

                        DateTime SDt = DateTime.ParseExact(Stime, "HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture);
                        DateTime EDt = DateTime.ParseExact(Etime, "HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture);                    dt.Rows[i]["StartTime"] = SDt;
                        dt.Rows[i]["EndTime"] = EDt;
    这个样子?
      

  3.   

    datatable创建时怎么定义的列 ? 字符串应该不会自动加上今天时间吧。
      

  4.   


    String EndTime = 
    Convert.ToDateTime(dt.Rows[i]["EndTime"]).ToString("yyyy MM dd hh mm ss");楼主,试试这样应该可以的
      

  5.   

    问题明白了,谢谢各位。
    原来是表结构中StartTime 和 EndTime的数据类型是datatime
    所以会自动赋值上时间
    不改动数据库的情况下是这么写的                DataTable dt = SendSgsWebBll.GetSgsTaskTime(int.Parse(hidTaskId.Value));                DataTable Ndt = new DataTable();                for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        DataColumn column = new DataColumn();
                        if (dt.Columns[i].DataType == typeof(DateTime))
                        {
                            column.DataType = typeof(String);
                        }
                        else
                        {
                            column.DataType = dt.Columns[i].DataType;
                        }
                        column.ColumnName = dt.Columns[i].ColumnName;
                        Ndt.Columns.Add(column);
                    }
                    
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        DataRow dr = Ndt.NewRow();
                        for(int iColumn = 0;iColumn<dt.Columns.Count;iColumn++)
                        {
                            if (dt.Columns[iColumn].ColumnName == "StartTime" || dt.Columns[iColumn].ColumnName == "EndTime")
                            {
                                String time = dt.Rows[i][dt.Columns[iColumn].ColumnName].ToString();  
                                String Stime = time.Substring(9, time.Length - 9); 
                                dr[iColumn] = Stime;
                            }
                            else
                            {
                                dr[iColumn] = dt.Rows[i][iColumn].ToString();
                            } 
                        }                    Ndt.Rows.Add(dr);
                    }
                    this.gv_TaskTime.DataSource = Ndt;
                    this.gv_TaskTime.DataBind();