如何使用脚本在Google表格中将时间转换为十进制浮点数?

时间:2018-04-05 14:01:27

标签: google-apps-script google-sheets google-sheets-api

我想将时间HH:MM转换为H.xx

就像我以这种格式获取它:Sat Dec 30 00:00:00 GMT+05:21 1899

但是这个值在单元格中是04:29。我希望4.5小时将其乘以每小时费率。

6 个答案:

答案 0 :(得分:6)

Google表格

在Google表格中,如果您在单元格中有日期/时间值(例如" D9"),请使用=HOUR(D9)+(MINUTE(D9)/60)

如果值以04:29格式存储,则使用=INDEX(SPLIT(D9, ":"), 1) + (INDEX(SPLIT(D9, ":"), 2)/60)

Google表格API& Google Apps脚本

如果您想使用Google表格API或Google Apps脚本,则可以使用javascript。

您需要使用getMinutes()方法除以60,然后将其添加到小时(使用getHours())。

var date = new Date();
var minutes = date.getMinutes();
var output = date.getHours() + (minutes/60);

请注意,这会忽略秒数。

如果单元格中的值存储为04:29之类的字符串,那么您需要split它。

var time = "04:29";
var hour = Number(time.split(":")[0]);
var minutes = Number(time.split(":")[1]);
var output = hour + (minutes/60);

答案 1 :(得分:2)

您需要的只是TO_PURE_NUMBER()
https://support.google.com/docs/answer/3094243?hl=en

示例:

// The following
A1=DATEVALUE("2020-05-18 06:09:18.821 ")+TIMEVALUE("2020-05-18 06:09:18.821 ")
A2=TO_PURE_NUMBER(A1)
A3=TO_DATE(A2)

// Results in the following, first result is just a formatted date
2020-05-18 6:09:19
43969.25647
5/18/2020

答案 2 :(得分:1)

=(INDEX(SPLIT(E17, ":"), 1) &"."& (INDEX(SPLIT(E17, ":"), 2))) * hourlyRate

答案 3 :(得分:1)

这似乎有效: =TEXT(D2-C2,"h:mm")*24

其中D2是结束时间,C2是开始时间

=TEXT(D2-C2,"h:mm")部分会减去时间并将结果转换为时间格式。 * 24部分使其成为可用的小数而不是时间格式。因此,就我而言,我的开始时间为12:30 pm,结束时间为1:20 pm。工作表认为差异为:50,它被解释为上午12:50。但是,当您乘以24时,结果便为.833333333。

我在开始时间10am和结束时间12pm进行了测试,得到了200万,这也是正确的。

糟糕,我现在看到您需要使用脚本。抱歉。这是在工作表内。

答案 4 :(得分:0)

我尝试了上述方法但成效有限,因为我需要另一个单元格来将时间值转换为计算后的值。但是,我尝试了对此的修改,令我惊讶的是,它有效。我将分享我的解决方案并希望它有所帮助。

我有一个开始时间和一个结束时间。假设我的开始时间在D6,我的结束时间在E6

使用上面的公式,我必须有一个单元格(让我们说F6)执行E6-D6,然后另一个单元格(比如说G6)来转换{{1}从时间到小数。

我使用以下内容来简化:

F6

直接进入=INDEX(SPLIT(E6-D6, ":"), 1) + (INDEX(SPLIT(E6-D6, ":"), 2)/60),无需转换F6单元格。

希望这有帮助!

答案 5 :(得分:0)

只需将您的持续时间乘以24。

示例:

Time In     | Time out   | Duration | Decimal
11:45:00 AM | 3:40:00 PM | 3:55:00  | 3.92

您还必须将包含小数的单元格的格式从“自动”更改为“数字”,以使其在Google表格中起作用。