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

Posted

技术标签:

【中文标题】如何使用脚本在 Google 表格中将时间转换为十进制浮点数?【英文标题】:How to convert Time into decimal float in Google Sheets using Script? 【发布时间】:2018-09-15 09:23:19 【问题描述】:

我想把时间HH:MM转换成H.xx

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

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

【问题讨论】:

我在superuser 上找到了答案,如果您仍然需要帮助,这可能会有所帮助。 【参考方案1】:

谷歌表格

在 Google 表格中,如果您在单元格中有日期/时间值(例如“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 Script,那么您可以使用 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);

【讨论】:

拆分方法在谷歌表格中不起作用。已经试过了。 @TheOnlyAnil 抱歉,我陷入了 Google Apps 脚本的心态。我已经修改了答案。 @TheOnlyAnil 您能否提供您的输入(值)和脚本/公式的屏幕截图? 谢谢,我只需要为此创建另一个列,它工作得很好。【参考方案2】:

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

例子:

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

您还必须将包含小数点的单元格的格式从“自动”更改为“数字”,这样才能在 Google 表格中使用。

【讨论】:

简单准确。谢谢【参考方案3】:

您只需要 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

【讨论】:

【参考方案4】:

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

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

使用上述公式,我必须有一个单元格(比如说F6)来执行E6-D6,然后另一个单元格(比如说G6)将F6 从时间转换为小数。

我通过使用以下方式来缩短它:

=INDEX(SPLIT(E6-D6, ":"), 1) + (INDEX(SPLIT(E6-D6, ":"), 2)/60)

直接转换为F6,无需G6 单元格进行转换。

希望这会有所帮助!

【讨论】:

【参考方案5】:
=(INDEX(SPLIT(E17, ":"), 1) &"."& (INDEX(SPLIT(E17, ":"), 2))) * hourlyRate

【讨论】:

避免仅使用代码的答案。提供一点解释【参考方案6】:

这似乎有效: =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。

我用开始时间上午 10 点和结束时间下午 12 点对其进行了测试,得到了 2.000000000,这也是正确的。

哎呀,我现在看到您想要使用脚本。对不起。这是在工作表内。

【讨论】:

以上是关于如何使用脚本在 Google 表格中将时间转换为十进制浮点数?的主要内容,如果未能解决你的问题,请参考以下文章

将金额转换为十万和千万

如何在 Google 表格中将日期转换为字符串

在 Google 表格中将 Unix 纪元时间转换为日期

如何在 Google Apps 脚本中将 BigQuery TIMESTAMP 转换为日期?

如何在谷歌脚本中将文本作为日期插入单元格? (符合时区转换)

如何在新的 Google 表格中将持续时间格式化为 HH:mm