【问题标题】:Format cell as minutes : seconds in google spreadsheets将单元格格式设置为分钟:谷歌电子表格中的秒数
【发布时间】:2016-10-28 12:44:42
【问题描述】:

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

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

【问题讨论】:

    标签: database time google-sheets formatting google-sheets-formula


    【解决方案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:30 的内容时,它不会转换为上午 1:30:00,而是转换为 00:01:30。
    • 你不能将它应用到它自己,你必须使用一个辅助列 - 你是手动输入 1:30 还是从某个地方导入的?
    • 您可以尝试输入 0:1:30 这很烦人,但这是让它自动解释的唯一其他方法
    • 但在这种情况下,0:00:47 也会转换为 12:00:47 AM,这不是预期的结果。想要的结果应该是秒表显示的结果,而不是时钟显示的结果。
    • @sidgupta234 随机遇到了另一种方法 - 并更新了我的答案
    【解决方案2】:

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

    然后,例如,如果你想 SUM 那些时间你可以把它包装在 TIMEVALUE 像:

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

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

    =ARRAYFORMULA(TEXT(SUM(TIMEVALUE(A1:A10)), "[mm]:ss"))
    

    【讨论】:

      【解决方案3】:

      以下是我要解决的方法:

      1. 以纯文本形式输入(根据@player0's answer
      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")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多