我有以下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
答案 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