JavaScript New Date()

11
我有以下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个回答

20

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);

17
根据Mozilla 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
dateString 应该是被 parse 方法识别的格式。 - mb21

3

您最后一次转换将删除冒号后面的所有内容:

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

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

2

parseInt ("14:20:00") returns 14


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