javascript 日期对象丢失了其类型

标签 javascript

对于以下代码,

$(function() {
    a = new Date("2008-1-2");

    monthDiff = function(now, then) {
        var months;
        months = (now.getFullYear() - then.getFullYear()) * 12;
        months -= then.getMonth() + 1;
        months += now.getMonth();
        return months;
    };

    intervalToDate = function(interval, start, unit) {
        {
            return {
                day: function() {return new Date(start.getTime() + (interval*24*60*60*1000)); },
                week: function() {return new Date(start.getTime() + (interval*7*24*60*60*1000)); },
                month: function() {
                    // the result value below will not return a date object when running (only an object), what is weird is in the debug console, using the line below will totally return a date object.
                    var result = new Date(start.getTime() + interval*4*7*24*60*60*1000);
                    while (monthDiff(result, start) !== interval) {
                        result += 24*60*60*1000;
                    }
                    return result;
                } ,
                year: function() {
                    return start.getFullYear() + interval;
                }
            }[unit]();
        }
    };

    console.log(intervalToDate(20, a, "day"));
    console.log(intervalToDate(20, a, "week"));
    console.log(intervalToDate(20, a, "month"));
    console.log(intervalToDate(20, a, "year"));
})

这一行:

month: function() {
                        // the result value below will not return a date object when running (only an object), what is weird is in the debug console, using the line below will totally return a date object.
                        var result = new Date(start.getTime() + interval*4*7*24*60*60*1000);

结果将在调试控制台中正确返回。但在运行时,不知何故它不再是日期对象,因此当我尝试对其调用 getFullYear 函数时,我遇到了“无方法错误”。

最佳答案

您要向日期对象添加整数值result += 24*60*60*1000;,您必须使用日期方法来添加时间,而不仅仅是进行简单的添加。

示例:

result.setMilliseconds(result.getMilliseconds() + (24*60*60*1000));

关于javascript 日期对象丢失了其类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13881826/

相关文章:

javascript - jquery html() 不设置 div 内容

javascript - jQuery .append 不适用于 .submit

javascript - slick.js 从箭头中删除 focusOnSelect

javascript - 可重用的 react 组件时间线

javascript - FCKeditor 或 TinyMCE 如何捕获粘贴的图像?

javascript - 升级我的 PHP 聊天系统? (让它只更新新消息?)

java - 用于调用 Web 服务的 beanshell 脚本

javascript - 在 SAPUI5 中使用货币格式化程序

javascript - 如何从函数返回 Promise 的值?

Javascript 添加表格的值