在谷歌电子表格中将单元格格式设置为分钟:秒

问题描述 投票:0回答:4

我希望记录我完成某个编程问题所需的时间数据。我正在使用谷歌电子表格来保持我的表现。我面临的问题是,我希望单元格接受结果为 mm:ss,但谷歌表格正在将其转换为 12-hr 格式,即 hh:mm:ss,我怎样才能阻止这种情况发生?

例如:- 1:30 转换为 1:30:00 AM

database time google-sheets formatting google-sheets-formula
4个回答
1
投票

更新:

我找到了一种新的方法来做到这一点,它确实给了你你想要的价值:

=TEXT(TIME(,text(A1,"HH"),text(A1,right(A1,2))),"HH:MM:SS")

参见变形图片:

之前的回答-没有完全解决:

因此,您想要做的是使用单个正则表达式替换函数,您可以成功地将其转换为持续时间值:

=REGEXREPLACE(text(A2,"hh:mm:ss"),"(\d+):(\d+):(\d+)","$3:$1:$2")

使用

regexreplace
我基本上对每个片段进行分组并重新排序,以便将小时视为分钟,将分钟视为秒。

有关上下文和概念证明,这里有一个屏幕截图:

在单元格 A2 中,您可以看到原始的

1:30
,如果您查看公式栏,您可以看到 google 仍在将其格式化为 12 小时时间。

为了重申上述事实,在

BEFORE
右侧的单元格中,您会看到我将原始值格式化为文本,以表明它确实按小时、分钟、秒的顺序解释
hh:mm:ss
的这些值

C2 有变换它的公式

最后 D2 指向转换后的公式,以证明它实际上现在将其解释为

hh:mm:ss
但分钟和秒的顺序现在位于正确的位置


1
投票

这是我解决问题的方法:

  1. 以纯文本形式输入(按照@player0的回答
  2. 0 hours
    连接到您的字符串。
  3. 使用更多格式转换为所需格式 (123 下拉列表) >> 更多格式 (底部) >> 更多日期和时间格式 >> 通过格式化创建您自己的格式
    Minute (01):Second (01)
    >> 应用

这个过程如下图所示:

您可以将步骤 2 和 3 与以下函数结合起来:

=TIMEVALUE(CONCAT("0:",A2))

然后根据需要重新格式化。


专家方法:
通过为此创建自定义函数进入下一个级别。从this SO answer中汲取灵感,您可以创建以下自定义函数:

/**
 * Converts a string to a timestamp with specific formatting. NOTE:, 
 * user will need to format date on spreadsheet for correct formatting.
 *
 *@param {string} string string representing minutes and seconds (Ex "1:30")
 *@param {string} format string representing timestamp format (Ex. "mm:ss")
 @return timestamp with specific formatting
 *
 *@customfunction
 */
function getTimestamp(string,format) {
  
  // Start with the turn of the 20th century...
  var baseDate = "1900-01-01 "
  
  // Create a timestamp using the input string
  if (format=="mm:ss"){
    var newString = baseDate + "00:"+string
  }
  if (format=="HH:mm:ss"){
    var newString = baseDate + string
  }
  if (!newString){
    return "ERROR"
  }
  
  // Create your date and send off!
  var myDate = new Date(newString)
  return myDate
}

使用此功能如下:

=getTimestamp(A2,"mm:ss")

1
投票

如果有人在2022年仍在寻找答案,解决方案很简单。

转至格式 > 数字 > 自定义数字格式,然后输入

[mm]:ss

[mm]
周围的括号告诉谷歌表格将值视为持续时间,而不是时间。

如果您希望单元格仅显示一位数字的分钟(例如

"1:30"
而不是
"01:30"
),请使用
[m]:ss
。希望这对某人有帮助。


0
投票

您可以将列/单元格预先格式化为纯文本,以避免 Google 表格进一步“自动更正”:

然后,例如,如果您想要

SUM
那些时候,您可以将其包裹在
TIMEVALUE
中,例如:

=ARRAYFORMULA(SUM(TIMEVALUE(A1:A10)))

假设将其输出为持续时间:

=ARRAYFORMULA(TEXT(SUM(TIMEVALUE(A1:A10)), "[mm]:ss"))
© www.soinside.com 2019 - 2024. All rights reserved.