我获取的热门帖子, 转换后, 创建时间都是"47 年以前" 比如"希望 v2 不要禁止被降权童鞋的回复提醒" 这个帖子,
这是我转换函数, 网上的, 我也没看出有什么问题
function getDateDiff (dateTimeStamp) {
var minute = 1000 * 60;
var hour = minute * 60;
var day = hour * 24;
var halfamonth = day * 15;
var month = day * 30;
var year = day * 365;
var now = new Date().getTime();
var diffValue = now - dateTimeStamp;
if(diffValue < 0){
//非法操作
return '数据出错';
}
var yearC = diffValue / year;
var monthC = diffValue / month;
var weekC = diffValue / (7 * day);
var dayC = diffValue / day;
var hourC = diffValue / hour;
var minC = diffValue / minute;
if(yearC >= 1){
result = parseInt(yearC) + '年以前';
}else if(monthC >= 1){
result = parseInt(monthC) + '个月前';
}else if(weekC >= 1){
result = parseInt(weekC) + '星期前';
}else if(dayC >= 1){
result = parseInt(dayC) + '天前';
}else if(hourC >= 1){
result = parseInt(hourC) + '小时前';
}else if(minC >= 5){
result = parseInt(minC) + '分钟前';
}else{
result = '刚刚发表';
}
return result;
}
这是调用
v2exHot: self.data.v2exHot.concat(res.data.map(function (item) {
item.created = util.getDateDiff(new Date(item.created));
return item;
}))
1
aussieweever 2017-03-19 09:13:30 +08:00 via Android
没玩过,但 47 年前貌似是有些语言日期最小时间。另外难道不应该是直接从 datetimestamp 转成时间吗? month=day*30, year=day*365 都会造成偏差吧
|
2
sensui7 OP @aussieweever 这个函数的原理是接受一个时间戳, 然后获得当前时间的时间戳, 他们的差除以毫秒数, 就是你说的 month=day*30, 这个只是计算月的毫秒数.
这个函数我自己测试是没问题的, 但不知道为什么 V2EX 的帖子的时间戳穿进去都是这样. 我的测试 ``` var oneMonthAgoTimestamp = new Date('2017/2/19').getTime() var oneMonthAgoTime = getDateDiff(oneMonthAgoTimestamp) var v2exTimestamp = 1489808486 var v2exTime = getDateDiff(v2exTimestamp) console.log(oneMonthAgoTime) // 4 星期前 console.log(v2exTime) // 47 年以前 ``` |
3
GordianZ MOD 你打印一下 oneMonthAgoTimestamp 和 v2exTimestamp 就知道了。
|