我希望记录完成某个编程问题所需时间的数据。我正在使用谷歌电子表格来保持我的表现。我面临的问题是,我希望单元格接受 mm:ss 的结果,但google sheet将其转换为 12-hr 格式,即 hh :mm:ss ,我怎么能阻止这种情况发生?
例如: - 1:30 转换为凌晨1:30:00 。
答案 0 :(得分:2)
您可以将列/单元格预格式化为纯文本,以避免Google表格进一步进行“自动更正”:
然后,例如,如果您想SUM
那样的话,可以将其包装在TIMEVALUE
中,例如:
=ARRAYFORMULA(SUM(TIMEVALUE(A1:A10)))
假设将其输出为持续时间:
=ARRAYFORMULA(TEXT(SUM(TIMEVALUE(A1:A10)), "[mm]:ss"))
答案 1 :(得分:0)
更新:
我发现了一种新方法,它实际上可以为您提供所需的价值:
=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
,但分钟和秒的顺序现在位于正确的位置
答案 2 :(得分:0)
这是我要解决的方法:
0 hours
连接到您的字符串。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")