Javascript 如何在jquery中将日期和时间转换为timeago格式

Javascript 如何在jquery中将日期和时间转换为timeago格式,javascript,jquery,html,mobile-browser,Javascript,Jquery,Html,Mobile Browser,我正在尝试显示facebook新闻源,并将其显示在移动web应用程序上。它工作正常,但问题是它在移动web浏览器上不能以timeago格式(即2天前)显示时间,另一方面,它在桌面上也能正确显示时间。日期和时间的格式为2011-09-13T11:28:19+0000 在手机上,它显示了南年前 这是我的timeago函数代码 timeAgo('2011-09-13T11:28:19+0000'); function timeAgo(date_time) {

我正在尝试显示facebook新闻源,并将其显示在移动web应用程序上。它工作正常,但问题是它在移动web浏览器上不能以timeago格式(即2天前)显示时间,另一方面,它在桌面上也能正确显示时间。日期和时间的格式为2011-09-13T11:28:19+0000

在手机上,它显示了南年前

这是我的timeago函数代码

timeAgo('2011-09-13T11:28:19+0000');
function timeAgo(date_time) {                   
                //to get unix timestamp
                var currentDate = Math.round(+new Date()/1000);
                var tweetDate = Math.round(+new Date(date_time)/1000); 
                //alert(tweetDate);
                var diffTime = currentDate - tweetDate;
                //alert(diffTime);
                if (diffTime < 59) return 'less than a minute ago';
                else if(diffTime > 59 && diffTime < 120) return 'about a minute ago';
                else if(diffTime >= 121 && diffTime <= 3600) return (parseInt(diffTime / 60)).toString() + ' minutes ago';
                else if(diffTime > 3600 && diffTime < 7200) return '1 hour ago';
                else if(diffTime > 7200 && diffTime < 86400) return (parseInt(diffTime / 3600)).toString() + ' hours ago';
                else if(diffTime > 86400 && diffTime < 172800) return '1 day ago';
                else if(diffTime > 172800 && diffTime < 604800) return (parseInt(diffTime / 86400)).toString() + ' days ago';
                else if(diffTime > 604800 && diffTime < 12089600) return '1 week ago';
                else if(diffTime > 12089600 && diffTime < 2630880) return (parseInt(diffTime / 604800)).toString() + ' weeks ago';
                else if(diffTime > 2630880 && diffTime < 5261760) return '1 month ago';
                else if(diffTime > 5261760 && diffTime < 31570560) return (parseInt(diffTime / 2630880)).toString() + ' months ago';
                else if(diffTime > 31570560 && diffTime < 63141120) return '1 year ago';
                else return (parseInt(diffTime / 31570560)).toString() + ' years ago';
            }
timeAgo('2011-09-13T11:28:19+0000');
函数timeAgo(日期时间){
//获取unix时间戳的步骤
var currentDate=Math.round(+new Date()/1000);
var tweetDate=数学四舍五入(+新日期(日期和时间)/1000);
//警报(推特日期);
var diffTime=currentDate-tweetDate;
//警报(扩散时间);
如果(diffTime<59)返回“不到一分钟前”;
否则,如果(diffTime>59&&diffTime<120)返回“大约一分钟前”;
否则,如果(diffTime>=121&&diffTime 3600&&diffTime<7200)返回“1小时前”;
else if(diffTime>7200&&diffTime<86400)返回(parseInt(diffTime/3600)).toString()+‘小时前’;
否则,如果(diffTime>86400和&diffTime<172800)返回“1天前”;
else if(diffTime>172800&&diffTime<604800)返回(parseInt(diffTime/86400)).toString()+'days ago';
否则,如果(diffTime>604800和&diffTime<12089600)返回“1周前”;
else if(diffTime>12089600&&diffTime<2630880)返回(parseInt(diffTime/604800)).toString()+‘周前’;
否则,如果(diffTime>2630880和&diffTime<5261760)返回“1个月前”;
else if(diffTime>5261760&&diffTime<31570560)返回(parseInt(diffTime/2630880)).toString()+‘几个月前’;
否则,如果(diffTime>31570560和&diffTime<63141120)返回“1年前”;
else返回(parseInt(diffTime/31570560)).toString()+‘年前’;
}

如何解决此问题?

我遇到了类似的问题,我使用以下函数修复了它

function relative_time(date_str) {
    if (!date_str) {return;}
    date_str = $.trim(date_str);
    date_str = date_str.replace(/\.\d\d\d+/,""); // remove the milliseconds
    date_str = date_str.replace(/-/,"/").replace(/-/,"/"); //substitute - with /
    date_str = date_str.replace(/T/," ").replace(/Z/," UTC"); //remove T and substitute Z with UTC
    date_str = date_str.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // +08:00 -> +0800
    var parsed_date = new Date(date_str);
    var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); //defines relative to what ..default is now
    var delta = parseInt((relative_to.getTime()-parsed_date)/1000);
    delta=(delta<2)?2:delta;
    var r = '';
    if (delta < 60) {
    r = delta + ' seconds ago';
    } else if(delta < 120) {
    r = 'a minute ago';
    } else if(delta < (45*60)) {
    r = (parseInt(delta / 60, 10)).toString() + ' minutes ago';
    } else if(delta < (2*60*60)) {
    r = 'an hour ago';
    } else if(delta < (24*60*60)) {
    r = '' + (parseInt(delta / 3600, 10)).toString() + ' hours ago';
    } else if(delta < (48*60*60)) {
    r = 'a day ago';
    } else {
    r = (parseInt(delta / 86400, 10)).toString() + ' days ago';
    }
    return 'about ' + r;
};
函数相对时间(日期){
如果(!date_str){return;}
date\u str=$.trim(date\u str);
date\u str=date\u str.replace(/\.\d\d+/,“”);//删除毫秒
日期=日期替换(//-,“/”)。替换(//-,“/”);//替换-为/
date_str=date_str.replace(/T/,“”)。replace(/Z/,“UTC”);//删除T并用UTC替换Z
日期=日期替换(/([\+\-]\d\d)\:?(\d\d)/,“$1$2”);//+08:00->+0800
var parsed_date=新日期(date_str);
var relative_to=(arguments.length>1)?arguments[1]:new Date();//定义相对于..默认值现在是什么
var delta=parseInt((相对于.getTime()-parsed_日期)/1000);

delta=(delta这将对您有很大帮助:

已经有人在jquery插件中为您做了这件事