无法将addHours用于Date()

时间:2015-11-20 14:59:15

标签: javascript jquery date

我试图设置从文本框中读取它的约会的开始日期,这是我的代码:

var start_temp = $('#start-datetime').val()
var start = new Date(start_temp.toString('dd/MM/yyyy HH:mm'));
var currentMin = parseInt(start.toString('mm'));

if (currentMin > 0 && currentMin < 15)
    start.set({ 'minute': 15 });
else if (currentMin > 15 && currentMin < 30)
    start.set({ 'minute': 30 });
else if (currentMin > 30 && currentMin < 45)
    start.set({ 'minute': 45 });
else
    start.addHours(1).set({ 'minute': 0 });

$('#start-datetime').val(start.toString('dd/MM/yyyy HH:mm'));

如何看到我在文本框start-datetime中获取开始日期,此日期已填充约会信息。但现在这并不重要。
稍后我将此值传递给start变量,转换为日期对象并设置日期格式。但我明白了:

  

无效日期

如果我打印出来:$('#start-datetime).val()我得到:

  

20/11/2015 12:15

我做错了什么?

JSFIDDLE

3 个答案:

答案 0 :(得分:2)

由于您使用的是Date.js,请利用animation-name:

Date.parse

或在moment.js

var start = Date.parse($('#start-datetime').val());

答案 1 :(得分:0)

这是一种没有任何库的方法。

https://jsfiddle.net/st77vyLg/1/

//read the string
var start_temp = document.getElementById('start-datetime').value.split('/');
//get the data out of it
day=start_temp[0];
month=start_temp[1];
start_temp=start_temp[2].split(" ");
year=start_temp[0];
start_temp=start_temp[1].split(":");
hour=start_temp[0];
minute=start_temp[1];
//make a date variable
var start = new Date(year,month,day,hour,minute);
alert(start);

答案 2 :(得分:-1)

我认为可能是这一行:

var start = new Date(start_temp.toString('dd/MM/yyyy HH:mm'));

start_temp只是一个String(由第1行中的jQuery.val()返回)。我非常确定在它上面调用.toString('dd/MM/yyyy HH:mm')并没有真正做任何事情,你只需要恢复原来的字符串。那么接下来会发生什么:

new Date('20/11/2015 12:15')

这不是有效的日期格式。我并不熟悉Date.js,但也许您打算使用'dd/MM/yyyy HH:mm'作为new Date()的第二个参数,而不是toString()的第一个参数?