日期:2014-05-17  浏览次数:20446 次

如何把一个时间段按月拆分
比如有个时间段 2013-6-8 -》2013-7-8

我想拆分为 

2013-6-8 2013-6-30 
2013-7-1 2013-7-8

           

            //DateTime s_d = Convert.ToDateTime(startdate);
            //DateTime e_d = Convert.ToDateTime(enddate);
            //for (; s_d < e_d; )
            //{
            //    Response.Write(s_d.ToString("yyyy-MM-dd"));
            //    Response.Write(s_d.AddMonths(1)
            //}

------解决方案--------------------
你是用程序拆呢,还是用SQL语句来拆?
------解决方案--------------------
DateTime dt = new DateTime(nYear, nMonth, 1);
dt = dt.AddDays(-1); //一个月的最后一天,就是下一个月的第一天减一

2013-7-1就不用说了吧;
------解决方案--------------------
帮顶!
------解决方案--------------------
引用:
利用程序拆分


二楼的应该可以。构建下一个月第一天的DateTime对象,再减1天。
------解决方案--------------------
那只能对比yyyyMM就可以了呀
------解决方案--------------------
DateTime dtstatrt = new DateTime(2013,06,08);
DateTime dtstatrtDay = dtstatrt.AddMonths(1);//月份加1
//取出开始月最后一天
DateTime dtstatrtEndDay = Convert.ToDateTime(dtstatrtDay.Year.ToString() + "-" + dtstatrtDay.Month.ToString() + "-" + "1").AddDays(-1);
TimeSpan ts = dtstatrtEndDay - dtstatrt;
var test = string.Empty;
for(int i=1;i<ts.Days+1;i++)
{
test += dtstatrt.AddDays(i).ToShortDateString()+"\r\n";
}
MessageBox.Show(test);

下面的一样。参考下吧。写的不好。
------解决方案--------------------

//赋值
List<DateTime> lst = new List<DateTime>();
lst.Add(new DateTime(2013, 9, 30, 00, 30, 00));
lst.Add(new DateTime(2013, 10, 1, 00, 31, 01));
lst.Add(new DateTime(2013, 10, 30, 00, 40, 01));

//分段
var query = from t&nbs