如何使用脚本将 Google 工作表中的时间转换为十进制浮点数?
How to convert Time into decimal float in Google Sheets using Script?
我想把时间HH:MM
转换成H.xx
就像我得到的格式一样:Sat Dec 30 00:00:00 GMT+05:21 1899
但是这个值在单元格中是 04:29
。我希望用 4.5
小时乘以小时费率。
Google 张
在 Google 表格中,如果单元格中有 date/time 值(例如 "D9"),则使用 =HOUR(D9)+(MINUTE(D9)/60)
。
如果值以 04:29
格式存储,则使用 =INDEX(SPLIT(D9, ":"), 1) + (INDEX(SPLIT(D9, ":"), 2)/60)
。
Google 表格 API & Google Apps 脚本
如果您想使用 Google Sheets API 或 Google Apps 脚本,则可以使用 javascript。
您需要使用 getMinutes() method and divide by 60, then add that to the hour (using 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);
我尝试了上述方法但收效有限,因为我需要有另一个单元格来将计算后的时间值转换为。但是,我尝试对此进行修改,令我惊讶的是,它有效。我会分享我的解决方案,希望对您有所帮助。
我有开始时间和结束时间。假设我的开始时间是 D6
,我的结束时间是 E6
。
使用上面的公式,我必须有一个单元格(比方说 F6
)执行 E6-D6
,然后是另一个单元格(比方说 G6
)来转换 F6
从时间到小数。
我使用以下方式简化了此操作:
=INDEX(SPLIT(E6-D6, ":"), 1) + (INDEX(SPLIT(E6-D6, ":"), 2)/60)
直接进入 F6
,无需 G6
单元格进行转换。
希望对您有所帮助!
只需将你的持续时间乘以 24。
示例:
Time In | Time out | Duration | Decimal
11:45:00 AM | 3:40:00 PM | 3:55:00 | 3.92
您还必须将包含小数点的单元格的格式从“自动”更改为“数字”,以便在 Google 表格中使用。
=(INDEX(SPLIT(E17, ":"), 1) &"."& (INDEX(SPLIT(E17, ":"), 2))) * hourlyRate
这似乎有效:
=TEXT(D2-C2,"h:mm")*24
其中 D2
是结束时间,C2
是开始时间,
=TEXT(D2-C2,"h:mm")
部分既减去时间又将结果转换成时间格式。 * 24
部分使其成为可用的小数而不是时间格式。因此,就我而言,开始时间为 12:30 pm
,结束时间为 1:20 pm
。表格将差异视为 :50
,并将其解释为 12:50am。但是当你乘以 24 时,它就会计算出来,得到 .833333333.
我用上午 10 点开始时间和中午 12 点结束时间对其进行了测试,得到 2.000000000,这也是正确的。
糟糕,我现在看到你想要使用脚本了。对不起。这是在床单内。
你只需要 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
我想把时间HH:MM
转换成H.xx
就像我得到的格式一样:Sat Dec 30 00:00:00 GMT+05:21 1899
但是这个值在单元格中是 04:29
。我希望用 4.5
小时乘以小时费率。
Google 张
在 Google 表格中,如果单元格中有 date/time 值(例如 "D9"),则使用 =HOUR(D9)+(MINUTE(D9)/60)
。
如果值以 04:29
格式存储,则使用 =INDEX(SPLIT(D9, ":"), 1) + (INDEX(SPLIT(D9, ":"), 2)/60)
。
Google 表格 API & Google Apps 脚本
如果您想使用 Google Sheets API 或 Google Apps 脚本,则可以使用 javascript。
您需要使用 getMinutes() method and divide by 60, then add that to the hour (using 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);
我尝试了上述方法但收效有限,因为我需要有另一个单元格来将计算后的时间值转换为。但是,我尝试对此进行修改,令我惊讶的是,它有效。我会分享我的解决方案,希望对您有所帮助。
我有开始时间和结束时间。假设我的开始时间是 D6
,我的结束时间是 E6
。
使用上面的公式,我必须有一个单元格(比方说 F6
)执行 E6-D6
,然后是另一个单元格(比方说 G6
)来转换 F6
从时间到小数。
我使用以下方式简化了此操作:
=INDEX(SPLIT(E6-D6, ":"), 1) + (INDEX(SPLIT(E6-D6, ":"), 2)/60)
直接进入 F6
,无需 G6
单元格进行转换。
希望对您有所帮助!
只需将你的持续时间乘以 24。
示例:
Time In | Time out | Duration | Decimal
11:45:00 AM | 3:40:00 PM | 3:55:00 | 3.92
您还必须将包含小数点的单元格的格式从“自动”更改为“数字”,以便在 Google 表格中使用。
=(INDEX(SPLIT(E17, ":"), 1) &"."& (INDEX(SPLIT(E17, ":"), 2))) * hourlyRate
这似乎有效:
=TEXT(D2-C2,"h:mm")*24
其中 D2
是结束时间,C2
是开始时间,
=TEXT(D2-C2,"h:mm")
部分既减去时间又将结果转换成时间格式。 * 24
部分使其成为可用的小数而不是时间格式。因此,就我而言,开始时间为 12:30 pm
,结束时间为 1:20 pm
。表格将差异视为 :50
,并将其解释为 12:50am。但是当你乘以 24 时,它就会计算出来,得到 .833333333.
我用上午 10 点开始时间和中午 12 点结束时间对其进行了测试,得到 2.000000000,这也是正确的。
糟糕,我现在看到你想要使用脚本了。对不起。这是在床单内。
你只需要 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