2

首先,我不知道我应该用什么名称来引用这些格式中的每一种,所以请原谅我使用了一个真实的例子。

在 PHP 中,我可以轻松地将字符串时间转换为时间戳,然后使用该时间戳创建具有我选择的任何格式的时间,如下所示:$timestamp = strtotime('9:00 am'); $militaryTime = date('H:i:s',$timestamp); echo $militaryTime;

但是我如何在javascript中做到这一点?我只是不明白Date()我将使用 JS 对象中的哪个方法来输入我的初始时间,然后使用什么方法来转换时间,等等

那么,javascript中将“9:00 pm”转换为“21:00:00”的正确方法是什么?

4

2 回答 2

1

您可以使用正则表达式来获取字符串的各个部分:

var in = "9:00 pm";
var m = in.match(/(\d{1,2}):(\d{2}) ([ap])m/i);
m[1] = parseInt(m[1],10);
if( m[1] == 12) m[1] -= 12;
if( m[3].toLowerCase() == "p") m[1] += 12;
m[1] = m[1]%24;
var out = m[1]+":"+m[2];
于 2012-09-14T21:52:49.077 回答
1

http://jsfiddle.net/VxL4X/1/

var timeString = "7:33 PM";

var dateint = Date.parse("January 1, 2000 " + timeString);
var dateObj = new Date(dateint);
var milTime = dateObj.toLocaleTimeString();
var milTime2 = dateObj.toTimeString().split(" ")[0];

console.log(milTime);
console.log(milTime2);

toLocaleTimeString如果您希望此应用程序是国际化的,我可能会建议您不要使用。

另一种选择是手动构造时间字符串:http: //jsfiddle.net/VxL4X/2/

var manualTime = 
    dateObj.getHours().pad(2) + ':' +
    dateObj.getMinutes().pad(2) + ':' +
    dateObj.getSeconds().pad(2);

(注意 Number 对象与pad函数的扩展)

于 2012-09-14T21:53:20.110 回答