求两个时间点的时间季度差

z_f_p 2012-05-28 10:49:07
两个时间,比如一个:2010-03-01 一个:2012-05-01 怎样算出这两个时间相差几个季度。不用sql 处理。
...全文
293 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hypobenthos 2012-05-28
  • 打赏
  • 举报
回复
如果你的需求是 2011-03-16 为第一季度,2012-05-26 为第二季度,则相差5个季度,这种逻辑的话:
DateTime dtStart = dateTimePicker1.Value;
DateTime dtEnd = dateTimePicker2.Value;
DateTime temp = new DateTime();
if (dtStart > dtEnd)
{
temp = dtStart;
dtEnd = dtStart;
dtStart = temp;
}
int diffyear = (dtEnd.Year - dtStart.Year) * 4;
int diffmonth = ((dtEnd.Month - 1) / 3) - ((dtStart.Month - 1) / 3);
int diff = diffyear + diffmonth;
z_f_p 2012-05-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
既然你知道规则,就自己写吧,不要问了,没有现成的
[/Quote]

是写了,但是有点小问题,大多数出来的正确的,但是如果跨年之后会有误差,

    
string strEndTime= Convert.ToDateTime(endDate).AddMonths(0 - ((Convert.ToDateTime(endDate).Month - 1) % 3)).ToString("yyyy-MM-01"); //得到当前时间季度的第一天
string strStartTime = Convert.ToDateTime(startDate).AddMonths(0 - ((Convert.ToDateTime(startDate).Month - 1) % 3)).ToString("yyyy-MM-01");//得到当前时季度的第一天

if (strEndTime == strStartTime) diff = 0;
else
{
int month = (Convert.ToDateTime(endDate).Year - Convert.ToDateTime(startDate).Year) * 12 + (Convert.ToDateTime(endDate).Month - Convert.ToDateTime(startDate).Month); // 得到时间相差的月份。
diff = month / 3; //得到季度差
if (diff == 0) diff = 1;

}


如果传入的是2011-04-13 至 2012-06-06 算出相差4个季度正确,如果 2011-03-16 和2012-05-26 diff 算出是4个季度,事实上相差了5个季度,就不对了。
帮忙看看。
bdmh 2012-05-28
  • 打赏
  • 举报
回复
既然你知道规则,就自己写吧,不要问了,没有现成的
z_f_p 2012-05-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
TimeSpan
[/Quote]

这个时算的时间差,可以得到天数,但是季度的话要考虑好多因素,一年四个季度,1-3 4-6 7-9 10-12 ,然后算时间点的季度差。怎么算得到的准确。。。
相当之稳重 2012-05-28
  • 打赏
  • 举报
回复
TimeSpan

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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