首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请问个时间跨度的有关问题

2013-11-15 
请教个时间跨度的问题比如我开始时间 2013-11-13 07:25:30结束时间2013-11-15 12:12:30我怎么c#怎么计算得

请教个时间跨度的问题
比如我开始时间 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秒
[解决办法]


/// <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;
        }

[解决办法]

        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;


        }

热点排行