人类可读时间解析器

时间:2015-03-18 10:16:33

标签: javascript plugins time time-format

是否有任何插件可以将各种格式的时间转换为可以存储在DB中的整数值(秒)?

示例:

  • "30m" => 1800
  • "30" => 1800
  • "2h" => 7200
  • "0.5h" => 1800
  • ".5h" => 1800
  • "1" => 60

如果没有后缀,则应将号码解析为分钟。

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:



function parseToSeconds(timeString){
    var seconds = parseFloat(timeString);
    if(timeString.indexOf("m") != -1){
        seconds *= 60;
    }
    if(timeString.indexOf("h") != -1){
        seconds *= 3600;
    }
    return seconds;
}

alert("1: " + parseToSeconds("1") + "\n" +
      "1m: " + parseToSeconds("1m") + "\n" +
      "1h: " + parseToSeconds("1h") + "\n" +
      "1.5: " + parseToSeconds("1.5") + "\n" +
      "1.5m: " + parseToSeconds("1.5m") + "\n" +
      "1.5h: " + parseToSeconds("1.5h"));




这将正确转换您的大多数示例。但是,如果没有"格式"例如,指定30,它将假定字符串已经是几秒钟。

如果您想将参数解释为分钟,如果没有后缀,您可以这样做:

function parseToSeconds(timeString){
    var seconds = parseFloat(timeString);
    if(timeString.indexOf("h") != -1){
        return seconds * 3600;
    }
    return seconds * 60;
}

如果字符串包含h,请计算传递小时数的秒数。否则,总是假设"分钟"。