JavaScript新日期()

时间:2011-04-07 13:27:53

标签: javascript

我有以下JavaScript代码但由于某种原因,时间不包括分钟:

var austDay = $("#<%= hiddenFieldTime.ClientID %>").val().split(" ");

var year = austDay[0];

var months = austDay[1];

var days = austDay[2];

var time = austDay[3];

var timeUntil = new Date(parseInt(year), parseInt(months), 
                         parseInt(days), parseInt(time));

当我使用firebug进行调试时,这些是我的价值所在:

$("#ctl00_hiddenFieldTime").val() = "2011, 5, 6, 14:20:00"

year = "2011,"

months = "5,"

days = "6,"

time = "14:20:00"

timeUntil = Date {Mon Jun 06 2011 14:00:00 GMT-0400 (Eastern Daylight Time)}

如您所见,timeUntil设置为14:00:00而不是14:20:00

4 个答案:

答案 0 :(得分:17)

parseInt(time)是问题

以下是几个日期初始化格式

var d = new Date();
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);

答案 1 :(得分:15)

根据Mozilla documentation for Date,支持以下构造函数:

new Date()
new Date(milliseconds)
new Date(dateString)
new Date(year, month, day [, hour, minute, second, millisecond ])

这意味着在您的构造函数中,当您传递parseInt(time)时,该参数仅用于hour参数。你需要传递一个单独的参数几分钟,而另一个参数如果你想要几秒钟。

<小时/> 此外,您应始终将base参数传递给parseInt,如下所示:

parseInt(hours, 10)

否则,当您使用0等前导parseInt('08')解析值时,该值将被解释为八进制数。

答案 2 :(得分:2)

你的最后一次转换将放弃结肠后的所有内容:

parseInt("14:20:00"); // 14

整个转换相当臃肿,我建议最初尝试以一种格式格式化字符串,你可以将传递给JS的Date构造函数,这将使生活更轻松。

答案 3 :(得分:1)

parseInt ("14:20:00")返回14