我有一个Google Spreadsheets,我一直用它来记录我在工作中工作的时间。我正在尝试创建一个自定义函数来计算本周的总小时数。说我加班6小时,但周五休息。我的正常时间是32,我将有6个小时或加班。如果我不工作40个小时,我想调整我的总工作时间,从任何加班时间开始,并增加我的正常工作时间。
我已经提出了以下功能,但我还没有能够使它工作。我相信我遇到了数据类型的问题(输入是持续时间),但我不知道如何解决它。我除以24因为这似乎将值从持续时间转换为数字,但我仍然无法让它返回正确的答案。
function calcAdjRegHours(regHours, otHours) {
if(regHours<(40/24));
{
if(otHours>(0/24));
{
if((regHours + otHours)>(40/24));
{
var diff = (40/24) - regHours;
regHours += diff;
return regHours;
} elseif; {
return "regHours + otHours is less than 40";
}
} elseif; {
return "there are no otHours";
}
} elseif; {
return "regHours is greater than 40";
}
}
我忽略了什么,或者我是否过于复杂?
编辑:当我使用40:00和2:00的输入调用此函数时,我得到值:
Sun Dec 31 1899 17:00:00 GMT-0700(MST)2208988800001.6665。
如果我运行此功能:
function calcAdjRegHours(regHours, otHours) {
return ((regHours*24 + otHours*24)/24);
}
我得到:-4418114400000。
如果我使用“return(regHours + otHours);”,我会:
Sun Dec 31 1899 17:00:00 GMT-0700(MST)Sat Dec 30 1899 03:00:00 GMT-0700(MST)。
当我尝试添加变量时出现问题。它们被格式化为持续时间,从我的研究中我可以/需要将它们转换为算术。我通过将变量乘以24,添加,然后再将其除以24来使其恢复到持续时间。
答案 0 :(得分:0)
我最终使用:= if(F14&lt;(40/24),(F14 + G14),if(F14 =(40/24),F14,F14-(40/24)))。虽然我还想提出一个可以更好地完成它的自定义功能,但这样做了。