Javascript 以月为单位计算给定日期期间的季度需要微调解决方案

Javascript 以月为单位计算给定日期期间的季度需要微调解决方案,javascript,google-apps-script,Javascript,Google Apps Script,我想计算给定日期期间的季度数(四舍五入为2位小数) Fr eg, DATE FORMAT:DD/MM/YYYY START DATE = 1/3/2012 END DATE = 1/6/2012 No of quarters shld be = 3 DATE FORMAT:YYYY-MM-DD START DATE = 2012-09-05 END DATE = 2012-11-21 No of quarters shld be = 0.85 我已经写了一个脚本(谷歌应用程序脚本)

我想计算给定日期期间的季度数(四舍五入为2位小数)

Fr eg, 
DATE FORMAT:DD/MM/YYYY
START DATE = 1/3/2012
END DATE = 1/6/2012
No of quarters shld be = 3  

DATE FORMAT:YYYY-MM-DD
START DATE = 2012-09-05
END DATE = 2012-11-21
No of quarters shld be = 0.85  
我已经写了一个脚本(谷歌应用程序脚本)来计算季度计算fnctn,它工作得很好! 我的脚本跨越了1000行,里面有许多硬编码/常量,比如硬编码月份、计算闰年的年份等等

那么,有人能给我一个更好的想法/建议/解决方案来改进/减少我的编码吗? 还是我没有用最好的概念来写剧本

注意:我使用的场景:

为了得到我为每个可能性计算的十进制值。这就像“一年以上”和“一年之内”。在这个“一年内”中,我使用了“一个多月”和“一个月内”。如果满足“一个月以上”和“一年内”,我会每月检查一次月持续时间


我只是添加了我的代码以获得更多许可。

我认为这样做可能会奏效:

(第2年-第1年)*4+(第2个月-第1个月)/3

如果使用实际日期而不是字符串,则可以调用getFullYear和getMonth来查找每个日期的年份和月份

顺便说一句,你觉得怎么样 开始日期=2012年1月3日 结束日期=1/6/2012 宿舍数量shld=3

工作3天=3个季度如何?

即使你有1000多个LOC,如果你能详细说明你正在使用的方法,那将是很有帮助的。根据你的指导,我刚刚添加了我使用的场景,并且在上面的帖子中附上了我的代码供你批准。请看一看。如果你需要更多的细节,请告诉我@m90what's about
var noOfQuarters=((新日期(2012,11,21)).getTime()-(新日期(2012,9,5)).getTime())/((365/4)*24*60*60*1000)否则,您必须注意,您使用的季度持续时间不同,因为由于2月的长度缩短,一年的第一季度明显缩短。定义为具有可变长度的持续时间的倍数的持续时间在数学上是未知的:-)@Taras Tnx非常需要您的指导,但我需要精确的十进制o/p,但在您的计算中,完成一个季度需要额外的1或2天。当我使用Mar 1->Jun 1时,它给出了1个季度,但这应该给出1.01个季度。我预计的时间是3月1日->5月31日,应该是1/4,日期格式为DD/MM/YYYY。我没提到日期格式。我刚刚在帖子里也更新了。我还需要用十进制值进行计算。然后我想塔拉斯有了正确的答案。要么公式足够好,要么你必须按季度分开日期范围,以说明不同的月份长度。3月1日->6月1日不是1个季度吗?