我有以下脚本用于每月分配为1/12年,并找出2个日期之间的差异。例如,函数将1月到6月的总和作为一年的50%而不是49%(181/365)。我想将我的excel s / s移到Google,但似乎无法在Google Script中使用该功能。
Excel脚本
Function PartMonths(x, y)
PartMonths = (DateDiff("M", (DateSerial(Year(x), Month(x) + 1, 1) - 1),
(DateSerial(Year(y), Month(y) + 1, 1) - 1) + 1) - 2 + Day(y) /
Day(DateSerial(Year(y), Month(y) + 1, 1) - 1) + (Day(DateSerial(Year(x),
Month(x) + 1, 1) - 1) - Day(x) + 1) / Day(DateSerial(Year(x), Month(x) + 1,
1) - 1)) / 12
End Function
Google脚本
function PartMonths(x, y)
{ return PartMonths =(DateDif((Date(Year(x), Month(x) + 1, 1)),
(Date(Year(y), Month(y) + 1, 1) - 1) + 1,"M") - 1 + Day(y) /
Day(Date(Year(y), Month(y) + 1, 1) - 1) + (Day(Date(Year(x), Month(x) + 1,
1) - 1) - Day(x) + 1) / Day(Date(Year(x), Month(x) + 1, 1)-1))
}
x和y是可变输入的日期。在Google Scripts中调试代码时,它会显示“ReferenceError:”DateDif“未定义”
我不确定如何定义它?救命啊!
答案 0 :(得分:0)
定义功能使用
function DateDif(arg){
//Add here what should DateDif do
return something // something is the object reference to be returned by the function
// but you could use a literal like an integer, string or other
// primitives
}
参考
答案 1 :(得分:0)
Javascript自1970年1月1日以来以毫秒为单位保存日期
// fd final date JavaScript object date
// fi Initial date JavaScript object date
// Return date difference in fraction of day
function DateDif (fd,id){
var dayms=24*3600*1000;
return ( fd.valueof()-fi.valueof())/dayms;
}
但是,如果您从gsheet或excel恢复起息日。您只要返回fd-fi就足够了,因为excel在几天之内编码后,点是一天的一小部分之后便是