【问题标题】:using timeAgo by jQuery (or similar) to show the time ago a user (client) enters or refreshes a page通过 jQuery(或类似方法)使用 timeAgo 来显示用户(客户端)进入或刷新页面的时间
【发布时间】:2020-01-02 19:05:13
【问题描述】:

目前这是结果,但计时器不会转到“大约一分钟前”或“5 分钟前”等。它总是需要实际时间。我没有找到适合我的解决方案。

//timeago by jQuery
(function timeAgo(selector) {

  var templates = {
      prefix: "",
      suffix: " ago",
      seconds: "less than a minute",
      minute: "about a minute",
      minutes: "%d minutes",
      hour: "about an hour",
      hours: "about %d hours",
      day: "a day",
      days: "%d days",
      month: "about a month",
      months: "%d months",
      year: "about a year",
      years: "%d years"
  };
  var template = function(t, n) {
      return templates[t] && templates[t].replace(/%d/i, Math.abs(Math.round(n)));
  };

  var timer = function(time) {
      if (!time)
          return;
      time = time.replace(/\.\d+/, ""); // remove milliseconds
      time = time.replace(/-/, "/").replace(/-/, "/");
      time = time.replace(/T/, " ").replace(/Z/, " UTC");
      time = time.replace(/([\+\-]\d\d)\:?(\d\d)/, " $1$2"); // -04:00 -> -0400
      time = new Date(time * 1000 || time);

      var now = new Date();
      var seconds = ((now.getTime() - time) * .001) >> 0;
      var minutes = seconds / 60;
      var hours = minutes / 60;
      var days = hours / 24;
      var years = days / 365;

      return templates.prefix + (
              seconds < 45 && template('seconds', seconds) ||
              seconds < 90 && template('minute', 1) ||
              minutes < 45 && template('minutes', minutes) ||
              minutes < 90 && template('hour', 1) ||
              hours < 24 && template('hours', hours) ||
              hours < 42 && template('day', 1) ||
              days < 30 && template('days', days) ||
              days < 45 && template('month', 1) ||
              days < 365 && template('months', days / 30) ||
              years < 1.5 && template('year', 1) ||
              template('years', years)
              ) + templates.suffix;
  };

  var elements = document.getElementsByClassName('timeago');
  for (var i in elements) {
      var $this = elements[i];
      if (typeof $this === 'object') {
          $this.innerHTML = timer($this.getAttribute('title') || $this.getAttribute('datetime'));
      }
  }
  // update time every minute
  setTimeout(timeAgo, 60000);

})();


//Uhrzeit
a = new Date ();
b = a.getHours();
c = a.getMinutes();
d = a.getSeconds();
zeit = b+':'+c+':'+d;
document.getElementById("uhrzeit").innerHTML = zeit;

这就是我想在我的 html 文档中使用它的方式,它在我设置日期时起作用,或者当我使用“uhrzeit”时,它是一个占用实际时间的小脚本,但我想要客户端打开的时间这页纸。不便之处见谅

<div class="card-footer">
          <small class="text-muted"><time class="timeago" datetime="uhrzeit">December 17, 2019</time></small>
        </div>

【问题讨论】:

标签: javascript jquery html timer timeago


【解决方案1】:

您的错误可能在以下几行:

for (var i in elements) {
    var $this = elements;
    if (typeof $this === 'object') {
        $this.innerHTML = timer($this.getAttribute('title') || $this.getAttribute('datetime'));
    }
}

您是否更改了标题或日期时间属性?因为,如果不是,您总是向timer 函数发送相同的值

编辑: 添加用户上次输入的时间作为time 元素的属性。

这样

<time class="timeago" datetime="2008-07-17T09:24:17Z" title="July 17, 2008">11 years ago</time>

【讨论】:

  • 不,我没有更改任何东西,它是从 timeago 网站timeago.yarp.com 直接出来的,我该如何解决?我希望它需要用户进入页面的时间,然后在上面显示时间。
  • 你需要这样做 将标题或日期时间属性添加到时间元素
猜你喜欢
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
相关资源
最近更新 更多