文档章节

两个时间相减得到差值小时//通过Linq对DataTable进行Group By

_Somuns
 _Somuns
发布于 2019/12/13 20:12
字数 461
阅读 36
收藏 0
 if (dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        DateTime dtone;
                        DateTime dttwo;
                        DateTime dtthree;
                        DateTime dtfour;
                        TimeSpan span1;
                        string DiffStartHours;
                        string DiffEndHours;
                        dtone = Convert.ToDateTime(CommonFunction.MakeDateFormat(dt.Rows[i][1].ToString()));//Convert.ToDateTime("2015-8-8 06:00:00")
                        if (dt.Rows[i][3].ToString() == "")
                        {
                            DiffStartHours = "-";
                        }
                        else
                        {
                            dttwo = Convert.ToDateTime(CommonFunction.MakeDateFormat(dt.Rows[i][3].ToString()));
                            span1 = dtone.Subtract(dttwo); //算法是dtone 减去 dtwo
                            DiffStartHours = (span1.Days * 24 + span1.Hours).ToString();
                        }
                        
                        dtthree = Convert.ToDateTime(CommonFunction.MakeDateFormat(dt.Rows[i][2].ToString()));//Convert.ToDateTime("2015-8-8 06:00:00")
                        if (dt.Rows[i][3].ToString() == "")
                        {
                            DiffEndHours = "-";
                        }
                        else
                        {
                            dtfour = Convert.ToDateTime(CommonFunction.MakeDateFormat(dt.Rows[i][4].ToString()));
                            TimeSpan span2 = dtthree.Subtract(dtfour);
                            DiffEndHours = (span2.Days * 24 + span2.Hours).ToString();
                        }
                       
                        //tss.Text = span.Days + "天" + span.Hours + "小时" + span.Minutes + "分钟" + span.Seconds + "秒" + span.TotalDays;
                        dtResult.Rows.Add(dt.Rows[i][0], dt.Rows[i][1], dt.Rows[i][2], dt.Rows[i][3], dt.Rows[i][4], DiffStartHours, DiffEndHours);
                    }
                }

===================================

   private DataTable ConvertTable(DataTable dt)
        {
            DataTable dtResult = new DataTable();
            DataTable dtResult2 = new DataTable();
            dtResult.Columns.Add("EVENT_CODE");
            dtResult.Columns.Add("EVENT_DURATION_TIME" ,typeof(int));
            if (dt != null && dt.Rows.Count>0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DateTime dtone;
                    DateTime dttwo;
                    TimeSpan span1;
                    int DurationMinutes;
                    dtone = Convert.ToDateTime(CommonFunction.MakeDateFormat(dt.Rows[i][1].ToString()));//Convert.ToDateTime("2015-8-8 06:00:00")
                    if (dt.Rows[i][1].ToString() == ""|| dt.Rows[i][2].ToString() == "")
                    {
                        DurationMinutes = 0;
                    }
                    else
                    {
                        dttwo = Convert.ToDateTime(CommonFunction.MakeDateFormat(dt.Rows[i][2].ToString()));
                        span1 = dttwo.Subtract(dtone); //算法是dtwo 减去 dtone
                        DurationMinutes =( (span1.Days * 24 + span1.Hours)*60+span1.Minutes);
                    }
                    //tss.Text = span.Days + "天" + span.Hours + "小时" + span.Minutes + "分钟" + span.Seconds + "秒" + span.TotalDays;
                    dtResult.Rows.Add(dt.Rows[i][0],DurationMinutes);
                }

                dtResult2 = dtResult.Clone();//将dt克隆到dtResult,但是dtResult里面并没有数据,只有结构,这是COPY方法的区别
                DataTable dtName = dtResult.DefaultView.ToTable(true, "EVENT_CODE");//选择某一列中不同项的名称,这里选的是C1列只有A和B两个不同的项
                                                                            //接下通过循环分组求和
                for (int i = 0; i < dtName.Rows.Count; i++)
                {
                    DataRow[] rows = dtResult.Select("EVENT_CODE='" + dtName.Rows[i][0] + "'");//注意这里多一对单引号,在等号后面有一个单引号这点一定不能忘记,否则运行的时候会出错,提示找不到列
                    DataTable temp = dtResult2.Clone();
                    foreach (DataRow row in rows)
                    {
                        temp.Rows.Add(row.ItemArray);
                    }
                    DataRow dr = dtResult2.NewRow();
                    dr[0] = dtName.Rows[i][0].ToString();
                    dr[1] = temp.Compute("sum(EVENT_DURATION_TIME)", "");//compute 是一个函数用于计算,只有两个参数
                    dtResult2.Rows.Add(dr);
                }
            }
           
            return dtResult2;
        }

 

© 著作权归作者所有

_Somuns
粉丝 6
博文 410
码字总数 507117
作品 0
闵行
程序员
私信 提问
杂七杂八——使用LINQ检索重复值

日常工作的时候,我们经常遇到需要检索一组数据中是否有重复值的情况,再根据具体情况进行相应的操作。如果不使用LINQ,那我们就得使用一层一层的foreach循环来做,不但麻烦、工作效率低(因...

余二五
2017/11/16
0
0
js两个时间戳比较

潜心笃志
2017/10/22
0
0
sql中两个时间类型相减得到的值

今天有人把数据库两个time类型的字段查出来并做了减法,得到一个长形的数字。这个数字是什么? 首先在数据库里建立一张test表(mysql的数据库) CREATE TABLE ( int(10) NOT NULL AUTO_INCRE...

王小明123
2012/05/15
8.8K
0
C# LINQ学习(3个例子)

本文中的内容是3个学习LINQ写时的代码段 场景1:对打乱顺序的诗句进行排序 按DataTable的列Number,对DataTable中的行进行排序,最后按序输出Content列 场景2:将分放在两个DataTable中的诗句...

北风其凉
2014/08/13
132
0
Mysql日期函数

MySQL 为日期增加一个时间间隔:dateadd() set @dt = now(); select dateadd(@dt , interval 1 day); - 加1天 select dateadd(@dt , interval 1 hour); -加1小时 select dateadd(@dt , inter......

小城故事_
2016/02/26
121
0

没有更多内容

加载失败,请刷新页面

加载更多

Kettle自定义jar包供javascript使用

我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。 本篇文章有参考自:https://www...

CREATE_17
昨天
102
0
处理CSV文件中的逗号

我正在寻找有关如何处理正在创建的csv文件的建议,然后由我们的客户上传,并且该值可能带有逗号(例如公司名称)。 我们正在研究的一些想法是:带引号的标识符(值“,”值“,”等)或使用|...

javail
昨天
79
0
如何克隆一个Date对象?

将Date变量分配给另一个变量会将引用复制到同一实例。 这意味着更改一个将更改另一个。 如何实际克隆或复制Date实例? #1楼 简化版: Date.prototype.clone = function () { return new ...

技术盛宴
昨天
73
0
计算一个数的数位之和

计算一个数的数位之和 例如:128 :1+2+8 = 11 public int numSum(int num) { int sum = 0; do { sum += num % 10; } while ((num = num / 10) > 0); return sum;......

SongAlone
昨天
124
0
为什么图片反复压缩后普遍会变绿,而不是其他颜色?

作者:Lion Yang 链接:https://www.zhihu.com/question/29355920/answer/119088684 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 业余版概要:安卓的...

shzwork
昨天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部