首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将日期转换为“天、小时或秒前”字符串?

如何将日期转换为“天、小时或秒前”字符串?
EN

Stack Overflow用户
提问于 2018-09-15 01:13:49
回答 1查看 88关注 0票数 0

我尝试获取形式为'018-09-06T15:06:44.091Z‘的字符串,然后从中减去Date.now(),然后将其转换为天、小时、分钟或秒前的字符串。例如,我得到上面的字符串,然后是:var date = Date.now() - new Date('018-09-06T15:06:44.091Z')。这给了我一个数字:697850577。我需要将这个数字转换为一个字符串,该字符串读取'3 days ago''30 seconds ago',基于自'018-09-06T15:06:44.091Z'以来所经过的时间。我不能使用moment.js或任何其他库。我只能使用Angular.JS 1.7和/或vanilla JS。

目前的实现是有效的,但必须有比这更好的方法:

代码语言:javascript
运行
复制
function conversions() {
    notif.rollupList.rollups.forEach(function (rollup) {
      rollup.type = getChangeType(rollup.type);
      rollup.modifiedAt = convertDate(rollup.modifiedAt)
    })
  }

  // Converts the date to 'something something ago'
  function convertDate(dateString) {
    var seconds = Math.floor((Date.now() - new Date(dateString)) / 
1000);
    if (seconds >= 60) {
      var minutes = Math.floor(seconds / 60);
      if (minutes >= 60) {
        var hours = Math.floor(minutes / 60);
        if (hours >= 24) {
          var days = Math.floor(hours / 24);
          if (days > 1) {
            return days.toString() + ' days ago'
          } else {
            return days.toString() + ' day ago'
          }
        } else {
          if (hours > 1) {
            return hours.toString() + ' hours ago'
          } else {
            return hours.toString() + ' hour ago'
          }
        }
      } else {
        if (minutes > 1) {
          return minutes.toString() + ' minutes ago'
        } else {
          return minutes.toString() + ' minute ago'
        }
      }
    } else {
      if (second > 1) {
        return seconds.toString() + ' seconds ago'
      } else {
        return seconds.toString() + ' second ago'
      }
    }
  }

提前感谢您的帮助。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52336566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档