7

我有HH:mm:ss格式的动态字符串(例如18:19:02)。如何将字符串转换为 JavaScript Date 对象(在Internet Explorer 8、Chrome 和 Firefox 中)?

我尝试了以下方法:

   var d = Date.parse("18:19:02");
   document.write(d.getMinutes() + ":" + d.getSeconds());
4

3 回答 3

21

您不能直接从HH:mm:ss.

但是 - 假设您想要当前日期(日期对象的日期部分是今天)或者对您的情况无关紧要 - 您可以执行以下操作:

let d = new Date(); // Creates a Date Object using the clients current time

let [hours, minutes, seconds] = "18:19:02".split(':');

d.setHours(+hours); // Set the hours, using implicit type coercion
d.setMinutes(minutes); // can pass Number or String - doesn't really matter
d.setSeconds(seconds);

// If needed, you could also adjust date and time zone

console.log(d.toString()); //Outputs desired time (+current day/timezone)

现在您有一个 Date 对象,其中包含您指定的时间以及客户的当前日期和时区。

于 2012-12-10T14:17:56.220 回答
8

试试这个(没有 jQuery 和日期对象(它只是一个时间)):

var
    pieces = "8:19:02".split(':')
    hour, minute, second;

if(pieces.length === 3) {
    hour = parseInt(pieces[0], 10);
    minute = parseInt(pieces[1], 10);
    second = parseInt(pieces[2], 10);
}
于 2012-12-10T14:15:48.240 回答
3

由于缺少日期部分,Date 对象永远不会正确设置。这应该有效:

var d = new Date("1970-01-01 18:19:02");
document.write(d.getMinutes() + ":" + d.getSeconds());
于 2012-12-10T14:14:05.150 回答