Javascript 显示与成员类似的日期:";“1年10个月”;

Javascript 显示与成员类似的日期:";“1年10个月”;,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我正在使用Angularjs,想知道如何以这种“格式”显示日期 成员:1年10个月 是否有Javascript/Jquery/Angularjs内置函数在执行此操作,或者我应该自己计算 谢谢您可以创建自己的过滤器,将.fromNow()封装在中 然后你可以像其他角度滤波器一样使用它 {{ "2014-01-01T12:00:00" | timeago }} 因为我没有找到我想要的东西,所以我自己做了 因此,此函数返回两个日期之间经过的时间 Date.prototype.from = funct

我正在使用
Angularjs
,想知道如何以这种“格式”显示日期

成员:
1年10个月

是否有
Javascript/Jquery/Angularjs
内置函数在执行此操作,或者我应该自己计算


谢谢

您可以创建自己的过滤器,将
.fromNow()封装在中

然后你可以像其他角度滤波器一样使用它

{{ "2014-01-01T12:00:00" | timeago }}

因为我没有找到我想要的东西,所以我自己做了

因此,此函数返回两个日期之间经过的时间

Date.prototype.from = function(pastDate, presentDate){

    var presentDate = (typeof presentDate === "undefined") ? this : presentDate;

    //the string to return.
    var dateString = "";

    var minute = 60 * 1000,
        hour = minute * 60,
        day = hour * 24,
        month = day * 30,
        year = month * 12,
        ms = Math.abs(presentDate - pastDate);

    var years = parseInt(ms / year, 10);
    ms -= years * year;

    var months = parseInt(ms / month, 10);
    ms -= months * month;

    var days = parseInt(ms / day, 10);
    ms -= days * day;

    var hours = parseInt(ms / hour, 10);
    ms -= hours * hour;

    var minutes = parseInt(ms / minute, 10);

     if(months <= 0 && days <= 0 && hours <= 0 && minutes <= 0){
        dateString = "1 minute";
        return dateString;
     }

     if(years > 0){

        if(years == 1){
            dateString += years + " year";
        }else{
            dateString += years + " years";
        }

        if(months > 0){

            if(months == 1){
                dateString += ", " + months + " month";
            }else{
                dateString += ", " + months + " months";
            }

        }
     //year = 0
     }else{
         if(months > 0){

            if(months == 1){
                dateString += months + " month";
            }else{
                dateString += months + " months";
            }

            if(days > 0){

                if(days == 1){
                    dateString  += ", " + days + " day";
                }else{
                    dateString  += ", " + days + " days";
                }
            }

         //month = 0
         }else{
            if(days > 0){

                if(days == 1){
                    dateString += days + " day";
                }else{
                    dateString += days + " days";
                }

                if(hours > 0){

                    if(hours == 1){
                        dateString += ", " + hours + " hour";
                    }else{
                        dateString += ", " + hours + " hours";
                    }

                }
            //days = 0
            }else{
                if(hours > 0){

                    if(hours == 1){
                        dateString += hours + " hour";
                    }else{
                        dateString += hours + " hours";
                    }
                    if(minutes > 0){

                        if(minutes == 1){
                            dateString += minutes + " minute";
                        }else{
                            dateString +=", " + minutes + " minutes";
                        }
                    }
                //hours = 0
                }else{
                    if(minutes > 0){

                        if(minutes == 1){
                            dateString += minutes + " minute";
                        }else{
                            dateString += minutes + " minutes";
                        }
                    }
                }
            }
         }
     }

    return dateString
}

没有JavaScript或jQuery内置函数(我不知道Angular),所以是的,你应该自己计算。好的,谢谢你的回答-“我什么都没试过,因为我在等你的回答。”@DA。为什么不呢?但是如果我问这个问题是想知道我是否必须自己计算,所以如果答案是肯定的,我会去做。没有逻辑来尝试自己计算,然后问问题后,知道是否有一些工具,已经存在做这件事。不是重新发明轮子。。所以你的否决票对我来说毫无意义。但是可以肯定的是,否决投票提供了一个好的答案,所需的时间更少。不过,提前做一些研究是有道理的。例如,在几秒钟内,我通过谷歌发现了这个问题:它似乎是一个相当全面的日期格式选项列表。但是为了帮助您,jQuery往往有十几个插件来满足大多数需要。我建议你在谷歌上搜索“jQuery日期格式插件”,看看那里是否有适合你的东西。这很好,但有没有办法显示3年、2个月、8天、23分钟前的情况?
Date.prototype.from = function(pastDate, presentDate){

    var presentDate = (typeof presentDate === "undefined") ? this : presentDate;

    //the string to return.
    var dateString = "";

    var minute = 60 * 1000,
        hour = minute * 60,
        day = hour * 24,
        month = day * 30,
        year = month * 12,
        ms = Math.abs(presentDate - pastDate);

    var years = parseInt(ms / year, 10);
    ms -= years * year;

    var months = parseInt(ms / month, 10);
    ms -= months * month;

    var days = parseInt(ms / day, 10);
    ms -= days * day;

    var hours = parseInt(ms / hour, 10);
    ms -= hours * hour;

    var minutes = parseInt(ms / minute, 10);

     if(months <= 0 && days <= 0 && hours <= 0 && minutes <= 0){
        dateString = "1 minute";
        return dateString;
     }

     if(years > 0){

        if(years == 1){
            dateString += years + " year";
        }else{
            dateString += years + " years";
        }

        if(months > 0){

            if(months == 1){
                dateString += ", " + months + " month";
            }else{
                dateString += ", " + months + " months";
            }

        }
     //year = 0
     }else{
         if(months > 0){

            if(months == 1){
                dateString += months + " month";
            }else{
                dateString += months + " months";
            }

            if(days > 0){

                if(days == 1){
                    dateString  += ", " + days + " day";
                }else{
                    dateString  += ", " + days + " days";
                }
            }

         //month = 0
         }else{
            if(days > 0){

                if(days == 1){
                    dateString += days + " day";
                }else{
                    dateString += days + " days";
                }

                if(hours > 0){

                    if(hours == 1){
                        dateString += ", " + hours + " hour";
                    }else{
                        dateString += ", " + hours + " hours";
                    }

                }
            //days = 0
            }else{
                if(hours > 0){

                    if(hours == 1){
                        dateString += hours + " hour";
                    }else{
                        dateString += hours + " hours";
                    }
                    if(minutes > 0){

                        if(minutes == 1){
                            dateString += minutes + " minute";
                        }else{
                            dateString +=", " + minutes + " minutes";
                        }
                    }
                //hours = 0
                }else{
                    if(minutes > 0){

                        if(minutes == 1){
                            dateString += minutes + " minute";
                        }else{
                            dateString += minutes + " minutes";
                        }
                    }
                }
            }
         }
     }

    return dateString
}
// now
var now = new Date();

var d1 = new Date("October 13, 1995 11:13:00")
var d2 = new Date("March 13, 2005 11:13:00")

// from now
alert( now.from( d1 ) )

// time elapsed between two dates 
alert( now.from( d1, d2 ) )