求助,计算时间差问题,总是重复数据!

giantboy520 2006-09-14 08:39:25
有一个EXCEL表,记录着三个时间段的工作时间,
time1,time2,time3
把数据读到数据库后变成
time11,time12,time21,time22,time31,time32
现在计算前两个时间段的时间差然后相加,得出这两个时间段内的总工时,因为有的时间段的记录是空的,所以不能计算在内!
比如
time11是空的,那time12-time11就不能计算,只计算time22-time21的时间
我做出来可以算出时间了,可是有的时候time11,time12,time21,time22都是空的,他也是把上一天的时间记录下来,TimeSpan st1,ts2的值如果遇到第二天是空的,那总是保留上一天的时间。出来的时间就相同了。请问的的程序错在哪啦?麻烦帮忙下。
SqlConnection conn=new SqlConnection(cnString);
conn.Open();
string str1="select * from table1";
SqlDataAdapter myCommand = new SqlDataAdapter(str1,conn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "table");
int max=ds.Tables["table"].Rows.Count;
if( max > 0 )
{
for(int i=0;i<max;i++)
{
if(ds.Tables["table"].Rows[i]["time12"].ToString().Trim()!="")
{
if(ds.Tables["table"].Rows[i]["time11"].ToString().Trim()!="")
{
ts1=Convert.ToDateTime(ds.Tables["table"].Rows[i]["time12"])-Convert.ToDateTime(ds.Tables["table"].Rows[i]["time11"]);
}
}
if(ds.Tables["table"].Rows[i]["time22"].ToString().Trim()!="")
{
if(ds.Tables["table"].Rows[i]["time21"].ToString().Trim()!="")
{
ts2=Convert.ToDateTime(ds.Tables["table"].Rows[i]["time22"])-Convert.ToDateTime(ds.Tables["table"].Rows[i]["time21"]);
}
}
string datatime="";
if(Convert.ToString(ts1).Trim()=="")
{
datatime=Convert.ToString(ts2);
}
else if(Convert.ToString(ts2).Trim()=="")
{
datatime=Convert.ToString(ts1);
}
else
{
datatime=Convert.ToString(ts1.Hours+ts2.Hours);
}
string str2="update table1 set datatime=@datatime where id="+ds.Tables["table"].Rows[i]["id"].ToString();
SqlCommand cmd=new SqlCommand(str2,conn);
cmd.Parameters.Add(new SqlParameter("@datatime",SqlDbType.Char,20));
cmd.Parameters["@datatime"].Value=datatime.Trim();
cmd.ExecuteNonQuery();
}
conn.Close();
}
else
{
MessageBox.Show("数据为空,请导入数据!");
}
...全文
235 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jbeauty 2006-09-16
  • 打赏
  • 举报
回复
ts1=Convert.ToDateTime("00:00:00")-Convert.ToDateTime("00:00:00");
alien54155415 2006-09-14
  • 打赏
  • 举报
回复
就是那样吧,不过感觉用sql直接求出时间段,程序可能简洁些:time12-time11 as t1
giantboy520 2006-09-14
  • 打赏
  • 举报
回复
有更好的方法么?
giantboy520 2006-09-14
  • 打赏
  • 举报
回复
你是怎么清的?ts1和ts2怎么清呢?
我是让他变成0,才成的!
alien54155415 2006-09-14
  • 打赏
  • 举报
回复
嗯,每次循环要先清t1,t2值
giantboy520 2006-09-14
  • 打赏
  • 举报
回复
自己解决啦!呵呵!!!搞了一个下午,这么小的问题,哎!!
一时想看不到

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧