
我获取的热门帖子, 转换后, 创建时间都是"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 年 3 月 19 日 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 2017 年 3 月 19 日 你打印一下 oneMonthAgoTimestamp 和 v2exTimestamp 就知道了。 |