如何在JavaScript或jQuery中从时间字符串中获取分钟数

3
如何在javascript或jquery中从时间字符串获取分钟数?
例如:如果我的输入时间是“12:30 am”,那么我的输出应该是750分钟。

12:30 amжҳҜеҮҢжҷЁ12зӮ№30еҲҶпјҢ13:30жҳҜдёӢеҚҲ1зӮ№30еҲҶпјҢ00:30жҳҜеҮҢжҷЁйӣ¶зӮ№30еҲҶгҖӮ - Tymek
@Ganesh 有点困惑...如何将“12:30 am”与“750分钟”相关联。 - Jai
你需要在上午12:30和下午12:30之间使用750分钟吗?我认为这不是正确的方式,上午12:30表示30分钟,下午12:30表示750分钟。 - Arunprasanth K V
6个回答

3

试试这个:

var time="12:30 am";
var timeArray = time.split(" ");
timeArray = timeArray[0].split(":");
alert(parseInt(timeArray[0])*60+parseInt(timeArray[1]));

我认为你需要将第三行改为 timeArray = timeArray[0].split(":"); - Arunprasanth K V
@ArunprasanthKV,是的,你说得对。谢谢你纠正我。 - Bhushan Kawadkar

2

http://jsfiddle.net/32ecwdwh/

var time="12:30 pm";
var hr,min;
time = time.split(" ");
if(time[1]==='am'){
  time = time[0].split(":");
  hr= parseInt(time[0])-12;
  var min= parseInt(time[1]);
}
else{
  time = time[0].split(":");
  hr= parseInt(time[0]);
  min= parseInt(time[1]);
}
var date= new Date();
date.setHours(hr);
date.setMinutes(min);
alert(date.getHours()*60 + date.getMinutes());

你如何从字符串中获取12和30? - Oleksandr T.
12.30 am 是什么意思? - Arunprasanth K V
@Alexander 我假设输入是来自日期对象而不是字符串..我应该先提取小时和分钟.. - Rakesh_Kumar
@Rakesh_Kumar,但在问题中,将输入作为字符串“12:30 am”。 - Oleksandr T.

0

试试这样写:

var t='12:30 am';
var pat= /\d+/g;
var arr=(t.match(pat));
if(arr[0] && arr[1]){
   alert(parseInt(arr[0]*60) + parseInt(arr[1]));
}

var t='12:30 am';
var pat= /\d+/g;
var arr=(t.match(pat));
if(arr[0] && arr[1]){
  alert(parseInt(arr[0]*60) + parseInt(arr[1]));
}


0

首先,我可以说这不是正确的方法。

我们怎么能说上午12点30分是750分钟呢?我认为下午12点30分是750分钟,而上午12点30分只有30分钟,

无论如何,根据您的问题,您可以像下面这样做,它将给出您所要求的结果。

   var time="12:30 am"
   var time = time.split(" ");

    time = time[0].split(":");
    alert(parseInt(time[0])*60+parseInt(time[1]));

演示


0

使用正则表达式的函数:

function my_timestringToMin(input){
    input = input.match(/^(\d+)[:\.](\d+) ?(am|pm)?$/i);
    /* Convert input to array: [input, hours, minutes, am/pm/undefined] */

    var output = parseInt(input[2]); // minutes
        output += parseInt(input[1] * 60); // add hours * 60

    if(input[1] < 12 && input[3] == "pm") 
        output += 12*60; // if PM, add 12h

    return output;
}

$("#submit").click(function(){$("#result").html(my_timestringToMin($("#input").val()).toString());});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div><input type="text" id="input" value="12:30 am"><input id="submit" type="submit" value="calculate"></div>
<div>Result: <span id="result">750</span> min</div>

特点:

  • 支持0填充小时:"1:00 am" = "01:00 am"
  • AM/PM可选:"13:00" = "1:00 pm"
  • 小时和am/pm之间的空格可选:"00:00am" = "00:00 am"
  • 忽略大于11的小时的PM:"13:00pm" = "13:00"(对于使用24小时制的人来说是一种直观的常见错误解决方案)
  • 不区分大小写:"12:30 am" = "12:30 AM"
  • 识别点号和冒号:"12:30 am" = "12.30 am"

0
如果您使用new Date(year, month, day, hours, minutes, seconds, milliseconds);*创建日期,您可以使用d.getHours();和d.getMinutes();**

例如:

var date = new Date(2015, 2, 11, 12, 30, 00);
var hours = date.getHours();
var minutes = date.getMinutes();
var totalMinutes = hours * 60 + date.getMinutes();
$('#time-in-minutes').html(totalMinutes);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="time-in-minutes"/>

*http://www.w3schools.com/jsref/jsref_obj_date.asp **http://www.w3schools.com/jsref/jsref_getminutes.asp


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接