JavaScript新日期()

Use*_*983 10 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));
Run Code Online (Sandbox Code Playgroud)

当我使用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)}
Run Code Online (Sandbox Code Playgroud)

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

nik*_*svp 18

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);
Run Code Online (Sandbox Code Playgroud)


Jus*_*ier 16

根据DateMozilla文档,支持以下构造函数:

new Date()
new Date(milliseconds)
new Date(dateString)
new Date(year, month, day [, hour, minute, second, millisecond ])
Run Code Online (Sandbox Code Playgroud)

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


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

parseInt(hours, 10)
Run Code Online (Sandbox Code Playgroud)

否则,当你去与一家领先的解析值0,例如parseInt('08'),该值将被解释为一个八进制数.

  • 其中dateString的格式应为[解析方法](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/parse)可以识别。 (2认同)