我想为事件设置倒计时,因此仅在事件尚未开始的情况下,才显示事件前几天的倒计时。日期像DD-MM-YYYY这样存储在数据库中,因此我使用Moment.js对其进行了转换,但是我仍然没有得到剩余的日期。这是我的代码

moment.locale('es');
        var hoy = moment().format("DD-MM-YYYY");
        var finicio = moment("20-01-2015", "DD-MM-YYYY").format("DD-MM-YYYY");
        var ffin = moment("19-01-2015", "DD-MM-YYYY").format("DD-MM-YYYY");
        $(function () {
            if (finicio < hoy) {
                $("#estadoevento").text("EXPIRADO");
            }
            else if (finicio > hoy) {
                $("#estadoevento").text("EN ESPERA");
                var contador = moment(finicio).diff(moment(hoy));
                var espera = moment.duration(contador);
                var restante = espera.asDays();
                $("#contador").text("FALTAN " + restante + " DÍAS");
            }
            else {
                $("#estadoevento").text("EN ESTE MOMENTO");
            }
        });


但是我没有值,我不知道是否必须重新声明变量,当前,如果事件过期,传入或今天,并且正常工作,则代码仅在span标签上显示一条消息。

变量finicio是包含事件开始日期的变量,因此,如果事件在五天开始,我将尝试获取该数字,但尝试返回,但它返回0值。我也使用jQuery。

contador变量是两个日期的减法,espera变量获得contador的持续时间,最后restante更改为几天,但是我不知道我的代码在哪里出错。

最佳答案

好吧,有几件事。

格式返回字符串

.format()输出一个字符串。

因此,当您执行finicio < hoy时,您正在比较哪个字符串更大。如果字符串的格式设置为YYYY-MM-DD(从大到小),则可以,但是当它们的日期为第一天时,将无法正确比较它们。

而是使用isBefore isSameisAfter。并将它们与实际力矩对象一起使用:

var hoy = moment(); // No .format
var finicio = moment("20-01-2015", "DD-MM-YYYY");
var ffin = moment("19-01-2015", "DD-MM-YYYY");

if( hoy.isAfter(finicio) ){ ... }


从字符串中创建片刻

这个:

var contador = moment(finicio).diff(moment(hoy));


是相同的

var contador = moment('20-01-2015').diff(moment('20-01-2015'));


因为finicio以及字符串如何,而不是矩对象。

这意味着您正在根据字符串创建两个矩对象,而无需告诉矩它们的格式。如果单独运行moment('20-01-2015'),则会出现错误。

如果您创建finiciohoy时刻对象而不是字符串,则该代码将起作用。或者,如果您提供格式字符串:moment(finicio,"DD-MM-YYYY")

和以前一样,我建议在创建.formathoyfinicio时仅删除ffin,以便可以使用矩对象。

编辑:粒度

您可以使用isBefore isSameisAfter进行的另一件事是设置粒度。

moment().isSame('2015-02-06'); // false, because time is different
moment().isSame('2015-02-06', 'day'); // true, because anything smaller than days is ignored


这是注释固定的JSFiddle

关于javascript - 使用Moment.js从减去到日期获取日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27989676/

10-10 18:21
查看更多