我有这个JavaScript代码。我的问题是,我该如何使其发挥作用?
我尝试了timeSince("2008");
,但这并没有显示任何内容。
var timeSince = function(date) {
if (typeof date !== 'object') {
date = new Date(date);
}
var seconds = Math.floor((new Date() - date) / 1000);
var intervalType;
var interval = Math.floor(seconds / 31536000);
if (interval >= 1) {
intervalType = 'year';
} else {
interval = Math.floor(seconds / 2592000);
if (interval >= 1) {
intervalType = 'month';
} else {
interval = Math.floor(seconds / 86400);
if (interval >= 1) {
intervalType = 'day';
} else {
interval = Math.floor(seconds / 3600);
if (interval >= 1) {
intervalType = "hour";
} else {
interval = Math.floor(seconds / 60);
if (interval >= 1) {
intervalType = "minute";
} else {
interval = seconds;
intervalType = "second";
}
}
}
}
}
if (interval > 1 || interval === 0) {
intervalType += 's';
}
return interval + ' ' + intervalType;
};
代码来自How to format time since xxx e.g. “4 minutes ago” similar to Stack Exchange sites
答案 0 :(得分:0)
您引用的代码已经是一个函数,但它不输出任何内容,只返回包含您要查找的值的String
。因此,您必须使用javascript在HTML中插入String
,或者如果您只想查看值,则可以alert()
。你回归45年的原因是你将一个整数传递给函数。
函数本身使用JavaScript内置的Date()对象来计算时间。传入一个整数时,实际上是以毫秒值实例化该对象。
这是来自W3学校:
使用
new Date(number)
创建一个新的日期对象作为零时间加上数字。零时间是1970年1月1日00:00:00 UTC。数字以毫秒为单位指定:
猜猜自1970年以来已过去多少年(45年!)。因此,如果您想知道自2000年以来已经过了多少年,请不要使用timeSince(2000)
,请务必使用timeSince("2000")
(引号会有所不同)。
更新Fiddle
已编辑更正了小提琴中的拼写错误
答案 1 :(得分:0)
您需要将正确的日期格式传递给函数。
2015年7月29日星期三12:10:49 GMT + 0100(GMT夏令时间)
警告(timeSince('2015年7月29日12:10:49 GMT + 0100(GMT夏令时间)'));
您可以使用new Date()
您还需要对函数调用执行某些操作以查看/使用返回的数据,我将在下面显示几个示例。
警报结果
window.onload=function(){
var a = new Date();
alert(timeSince(a.setTime(a.getTime() - 150000)));
}
//
var timeSince = function(date) {
if (typeof date !== 'object') {date = new Date(date);}
var seconds = Math.floor((new Date() - date) / 1000);
var intervalType;
var interval = Math.floor(seconds / 31536000);
if(interval >= 1){intervalType = 'year';
}else{interval = Math.floor(seconds / 2592000);
if (interval >= 1){intervalType = 'month';
}else{interval = Math.floor(seconds / 86400);
if(interval >= 1) {intervalType = 'day';
}else{interval = Math.floor(seconds / 3600);
if(interval >= 1) {intervalType = "hour";
}else{interval = Math.floor(seconds / 60);
if(interval >= 1) {intervalType = "minute";
}else{
interval = seconds;intervalType = "second";
}}}}}
if (interval > 1 || interval === 0){intervalType += 's';}
return interval + ' ' + intervalType;
};
将结果应用于现有元素
window.onload=function(){
document.getElementById('example').innerHTML=timeSince('Wed Jul 29 2015 12:10:49 GMT+0100 (GMT Summer Time)');
}
//
var timeSince = function(date) {
if (typeof date !== 'object') {date = new Date(date);}
var seconds = Math.floor((new Date() - date) / 1000);
var intervalType;
var interval = Math.floor(seconds / 31536000);
if(interval >= 1){intervalType = 'year';
}else{interval = Math.floor(seconds / 2592000);
if (interval >= 1){intervalType = 'month';
}else{interval = Math.floor(seconds / 86400);
if(interval >= 1) {intervalType = 'day';
}else{interval = Math.floor(seconds / 3600);
if(interval >= 1) {intervalType = "hour";
}else{interval = Math.floor(seconds / 60);
if(interval >= 1) {intervalType = "minute";
}else{
interval = seconds;intervalType = "second";
}}}}}
if (interval > 1 || interval === 0){intervalType += 's';}
return interval + ' ' + intervalType;
};
<div id="example"></div>
我希望这会有所帮助。快乐的编码!