关于 V2 api 帖子创建时间, 我这见鬼了

2017-03-18 19:07:20 +08:00
 sensui7

我获取的热门帖子, 转换后, 创建时间都是"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;
        }))
1252 次点击
所在节点    问与答
4 条回复
aussieweever
2017-03-19 09:13:30 +08:00
没玩过,但 47 年前貌似是有些语言日期最小时间。另外难道不应该是直接从 datetimestamp 转成时间吗? month=day*30, year=day*365 都会造成偏差吧
sensui7
2017-03-19 11:53:16 +08:00
@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 年以前
```
GordianZ
2017-03-19 12:48:10 +08:00
你打印一下 oneMonthAgoTimestamp 和 v2exTimestamp 就知道了。
sensui7
2017-03-19 15:02:14 +08:00
@GordianZ 原来是精度的问题, 多谢, 多谢. XD

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/348498

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX