请教个时间跨度的问题

yanchangshan 2013-11-15 10:17:53
比如我开始时间 2013-11-13 07:25:30

结束时间 2013-11-15 12:12:30

我怎么c#怎么计算得出时间(用SQL也行)

2013-11-13 16小时35分钟30秒
2013-11-14 24小时
2013-11-15 12小时12分30秒
...全文
201 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanchangshan 2013-11-15
  • 打赏
  • 举报
回复
u011303459 feiniao19830822 应该是对的 我测试下 谢谢
yanchangshan 2013-11-15
  • 打赏
  • 举报
回复
我认为计算方法应该是 先判断开始时间和结束时间跨度几天 1 如果同一天直接减 2 如果就昨天和今天 就昨开始时间的那天剩下的时间 结束时间那天的的已过时间 3 如果超过两天应该是 开始时间那天的剩下的时间 中间间隔天数直接就是24小时 最后一天应该是这天已过去的时间
yanchangshan 2013-11-15
  • 打赏
  • 举报
回复
引用 7 楼 yanchangshan 的回复: 就是开始时间和结束时间 这个时间跨度的天数 每天消耗多少小时 当然也可能开始时间和结束时间就在同一天 把相减出来的TimeSpan和小时做一个除法不就行了。。。 你认为呢 比如 开始时间是 2013-11-05 00:15:00 结束时间是 2013-11-06 23:55:00 你认为就是除下天数吗 应该是 2013-11-05 23小时45分 2013-11-06 23小时55分
feiniao19830822 2013-11-15
  • 打赏
  • 举报
回复
ps:DateDiff函数是在熙风版主提供的函数上改的。
md5e 2013-11-15
  • 打赏
  • 举报
回复
protected string getTimeSpanString(DateTime time) { TimeSpan ts = time - DateTime.Now; if (ts.TotalSeconds <= 0) { return ""; } string txt = ""; if (ts.Days > 0) { txt += ts.Days + "天"; } if (ts.Hours > 0) { txt += ts.Hours + "小时"; } if (ts.Minutes > 0 && ts.Days<=0) { txt += ts.Minutes + "分"; } if (ts.Seconds > 0 && ts.Days <= 0 && ts.Hours <= 0) { txt += ts.Seconds + "秒"; } return txt; }
feiniao19830822 2013-11-15
  • 打赏
  • 举报
回复

        static void Main(string[] args)
        {
            //开始时间和结束时间
            DateTime dtStart = DateTime.Parse("2013-11-03 12:30:10");
            DateTime dtEnd = DateTime.Parse("2013-11-07 1:20:00");

            //一共多少天
            int iDays = (dtEnd.Date - dtStart.Date).Days + 1;

            DateTime dtDate;
            string sDateDiff ="";
            for (int i = 0; i < iDays; i++)
            {
                dtDate = dtStart.Date.AddDays(i);
                if (i > 0 && i < iDays - 1)
                {
                    //中间段固定24小时
                    sDateDiff = "24小时";
                    Console.WriteLine(dtDate.Date.ToShortDateString() + " " + sDateDiff);
                }
                else
                {
                    if (iDays == 1)
                    {
                        //开始时间和结束时间同一天
                        sDateDiff = DateDiff(dtEnd, dtStart);
                        Console.WriteLine(dtDate.Date.ToShortDateString() + " " + sDateDiff);
                    }
                    else
                    {
                        if (i == 0)
                        {
                            //第一天
                            sDateDiff = DateDiff(dtStart.Date.AddDays(1), dtStart);
                            Console.WriteLine(dtDate.Date.ToShortDateString() + " " + sDateDiff);
                        }
                        else
                        {
                            //最后一天
                            sDateDiff = DateDiff(dtEnd, dtEnd.Date.AddDays(-1));
                            Console.WriteLine(dtDate.Date.ToShortDateString() + " " + sDateDiff);
                        }
                    }
                }
            }

            Console.ReadLine();
        }

        /// <summary>
        /// 计算两个日期的时间间隔
        /// </summary>
        /// <param name="DateTime1">第一个日期和时间</param>
        /// <param name="DateTime2">第二个日期和时间</param>
        /// <returns></returns>
        private static string DateDiff(DateTime DateTime1, DateTime DateTime2)
        {
            string dateDiff = "";

            TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
            TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
            TimeSpan ts = ts1.Subtract(ts2).Duration();

            if (ts.Hours > 0)
            {
                dateDiff += ts.Hours.ToString() + "小时";
            }

            if (ts.Minutes > 0)
            {
                dateDiff += ts.Minutes.ToString() + "分钟";
            }

            if (ts.Seconds > 0)
            {
                dateDiff += ts.Seconds.ToString() + "秒";
            }
            return dateDiff;
        }
humiailinxue 2013-11-15
  • 打赏
  • 举报
回复
int day = time1.Days-time2.Days 就是天数 int hour1 = time1.Hours int hour2 = time2.Hours int hour = hour1-hour2(先判断hour1和hour2的大小再看谁减谁)
Greatcqi 2013-11-15
  • 打赏
  • 举报
回复
引用 7 楼 yanchangshan 的回复:
就是开始时间和结束时间 这个时间跨度的天数 每天消耗多少小时 当然也可能开始时间和结束时间就在同一天
把相减出来的TimeSpan和小时做一个除法不就行了。。。
yanchangshan 2013-11-15
  • 打赏
  • 举报
回复
就是开始时间和结束时间 这个时间跨度的天数 每天消耗多少小时 当然也可能开始时间和结束时间就在同一天
yanchangshan 2013-11-15
  • 打赏
  • 举报
回复
我要统计的跨度的这个天里面各是多少小时 上面好像只是算的总的多少小时吧 比如开始时间 2013-11-04 23:30:00 结束时间 2013-11-05 2:30:00 我要算的是 2013-11-04 30分钟 2013-11-05 2小时30分
熙风 2013-11-15
  • 打赏
  • 举报
回复

/// <summary>
        /// 计算两个日期的时间间隔
        /// </summary>
        /// <param name="DateTime1">第一个日期和时间</param>
        /// <param name="DateTime2">第二个日期和时间</param>
        /// <returns></returns>
        private string DateDiff(DateTime DateTime1, DateTime DateTime2)
        {
            string dateDiff = null;
            
            TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
            TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
            TimeSpan ts = ts1.Subtract(ts2).Duration();
            dateDiff = ts.Days.ToString()+"天"
                + ts.Hours.ToString()+"小时"
                + ts.Minutes.ToString()+"分钟"
                + ts.Seconds.ToString()+"秒";
            
            return dateDiff;
        }
bdmh 2013-11-15
  • 打赏
  • 举报
回复
用TimeSpan = 日期1 - 日期2
jiaoshiyao 2013-11-15
  • 打赏
  • 举报
回复
DateTime.Parse("2013-11-15 12:12:30")-DateTime.Parse("2013-11-13 07:25:30")
真喜悦之泪 2013-11-15
  • 打赏
  • 举报
回复
DateTime lasttime;//具体值看lz TimeSpan ts = DateTime.Now - lasttime; int dt = (int)(ts.TotalSeconds);//现在和lasttime相距多少秒

110,538

社区成员

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

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

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