首页 新闻 会员 周边 捐助

有个关于c# Subtract用法的疑问

0
[已解决问题] 解决于 2017-12-20 10:34

我想记录进行某操作花的时间,代码如下:

DateTime start = DateTime.Now;
……//操作

 

DateTime end = DateTime.Now;

int tc = (int)end.Subtract(start).TotalSeconds;

这个操作实际花了30多秒,但是tc算出来是300多,我的用法有啥问题吗,找了很久没找到原因,是不是我脑袋短路了,求大神指点

问题补充:

具体操作是插入数据库

int size = 100000;
int count = allList.Count / size + 1;
for (int m = 0; m < count; m++)
{
         List<DetailInfo> clist = allList.Skip(m * size).Take(size).ToList();
         if (clist.Count == 0)
                 continue;
         isok =Insert("DetailInfo",DataTableHelper<DetailInfo>.ToDataTable(clist));
}



public static bool Insert(string TableName, DataTable dt)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction))
                {
                    try
                    {
                        sqlbulkcopy.DestinationTableName = TableName;
                        sqlbulkcopy.BulkCopyTimeout = 36000;
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
                            sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
                        }
                        sqlbulkcopy.WriteToServer(dt);
                        return true;
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                    return false;
                }
            }
        }
hangjy的主页 hangjy | 初学一级 | 园豆:4
提问于:2017-12-18 09:47
< >
分享
最佳答案
0

Subtract的使用没问题,实际应该花了就是300多秒

DateTime start = DateTime.Parse("2017-12-18 13:00:00");
DateTime end = DateTime.Parse("2017-12-18 13:00:30");
int tc = (int)end.Subtract(start).TotalSeconds;
Console.WriteLine(tc); //30
奖励园豆:5
dudu | 高人七级 |园豆:30948 | 2017-12-18 13:14

我调试过,看了两个时间直接确实只差了30多秒,而且我还盯着电脑时间看过,确实只过了30多秒,远远不到330多秒

hangjy | 园豆:4 (初学一级) | 2017-12-18 13:21

@hangjy: 把start与end的值打印出来看看

dudu | 园豆:30948 (高人七级) | 2017-12-18 13:40
其他回答(2)
0

var stopwatch = new StopWatch();

stopwatch.start();

you do...

stopwatch.stop();

here stopwatch.Properties

花飘水流兮 | 园豆:13615 (专家六级) | 2017-12-18 10:01

谢谢,让我学到了一种计时方法。但是我用一个for循环测试了Stopwatch和我上面那种方法,结果是一样的,所以我想知道我的问题里面出现差别是哪儿出问题了

支持(0) 反对(0) hangjy | 园豆:4 (初学一级) | 2017-12-18 10:18
0

终于发现是个乌龙,我每次是把四个excel读出来插入数据库,分别命名为xxx0到xxx3,我设定的到第四个文件的时候执行插入操作,并把执行时间附件在文件名后面输出来,于是就变成了xxx334之类的,其实只有后两位数字是时间。

果然是我脑袋短路了

hangjy | 园豆:4 (初学一级) | 2017-12-20 10:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册