moment.js日期会添加,但时间不会

时间:2015-07-10 13:54:46

标签: javascript jquery time momentjs

我正在创建添加日期和时间的函数。这些是变量:

    var a = moment().format("MM/DD/YY");
    var j = moment().format("hh:mm A");
    var b = moment(a).format("MM/DD/YY");
    var s = moment(j).format("hh:mm:ss");
    var y = moment({ h: 23, m: 59}).format('hh:mm A');

以下是功能:

function myFunction() {
    var c = moment(b).add(1, 'day').format("MM/DD/YY");
    document.getElementById("demo2").innerHTML = "<p></p>"+ "X: " +c + "<br>" + y;
     b = c;
}
function myFunction1() {
    var c = moment(b).add(1, 'month').format("MM/DD/YY");
    document.getElementById("demo2").innerHTML ="<p></p>"+ "X: " +c + "<br>" + y;
     b = c;
}
function myFunction2() {
    var c = moment(b).add(1, 'year').format("MM/DD/YY");
    document.getElementById("demo2").innerHTML  ="<p></p>"+ "X: " +c + "<br>" + y;
     b = c;
}
function myFunction3() {
    var c = moment(a).format("MM/DD/YY")
    document.getElementById("demo2").innerHTML  = "<p></p>"+ "X: 00/00/00" + "<br>" + y;
     b = c;
}
function myFunction5() {

    var d = moment(y).add(1, 'hours').format("hh:mm A");
    document.getElementById("demo2").innerHTML  = "<p></p>"+ "X: "+ c + "<br>" + d;
    y = d;
}
function myFunction6() {
    var e = moment(y).add(1, 'min').format('hh:mm A');
    document.getElementById("demo2").innerHTML  = "<p></p>"+ "X: "+ c + "<br>" + e;
    y = e;
}

添加1天,1个月和1年的功能,以及clear(myFunction3)全部工作。时间函数没有。我从晚上11:59开始,并希望分别增加小时和分钟。我知道我的代码很粗糙,我还在学习。感谢

3 个答案:

答案 0 :(得分:1)

检查http://momentjs.com/docs/#/manipulating/add/

您的小时加法功能应该有效,但“分钟”应拼写为“分钟”或使用简写“m”。

答案 1 :(得分:0)

感谢您的建议。我在第二个函数中修改了分钟,这是我如何使它工作。这与时间格式有关。

var y1 = moment({ h: 23, m: 59});
var y = y1.format('hh:mm A');

然后功能如下:

function myFunction5() {
    var d1 = moment(y1).add(1, 'hours');
    var d = d1.format('hh:mm A');
    document.getElementById("demo2").innerHTML  = "<p></p>"+ "X: "+ b + "<br>" + d;
    y1 = d1;
}
function myFunction6() {
    var e1 = moment(y1).add(1, 'minutes');
    var e = e1.format('hh:mm A');
    document.getElementById("demo2").innerHTML  = "<p></p>"+ "X: "+ b + "<br>" + e;
    y1 = e1;
}

我确信有更好的方法,但它的工作方式就是这样。

答案 2 :(得分:0)

您在代码中多次犯同样的错误:

var a = moment().format("MM/DD/YY");
var b = moment(a).format("MM/DD/YY");

a是一个字符串,因此当您将其传递到moment(a)时,您将解析字符串 - 这是不必要的。它也容易出错,因为您没有将任何特定输入格式作为第二个参数传递给moment函数。如果您查看日志,您可能会看到一堆弃用警告。

它还不清楚你用它来实现什么,因为两个字符串无论如何都是相同的输出格式。如果你想获得当天的开始,那么它将是这样的:

var now = moment();
var a = now.format("...");
var b = now.clone().startOf('day').format("...");

(用您选择的格式替换...

换句话说 - 不要混淆使用stringmoment实例,并且在不必要的时候不要解析字符串。

您在所有功能中犯了同样的错误。此外,正如其他人所指出的那样,使用'minutes''m',但不使用'min'。有关详细信息,请参阅the documentation