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 ) )