【问题标题】:display minutes in Javascript在 Javascript 中显示分钟
【发布时间】:2013-11-16 02:59:37
【问题描述】:

我正在使用一个名为 YOUMAX 的代码库,它在我的网站上显示来自我的频道的 youtube 视频。

我无法让视频显示正确的上传时间。现在,我可以说它是“3 小时前”或“2 天前”或“5 个月前”上传的..

但我有几分钟无法弄清楚代码。

function getDateDiff(timestamp) {
    if (null === timestamp || timestamp === "" || timestamp === "undefined") return "?";
    var splitDate = ((timestamp.toString().split('T'))[0]).split('-');
    var splitTime = ((timestamp.toString().split('T'))[1]).split(':');
    var d1 = new Date();
    var d1Y = d1.getFullYear();
    var d2Y = parseInt(splitDate[0], 10);
    var d1M = d1.getMonth() + 1;
    var d2M = parseInt(splitDate[1], 10);
    var d1D = d1.getDate();
    var d2D = parseInt(splitDate[2], 10);
    var d1H = d1.getHours();
    var d2H = parseInt(splitTime[0], 10);
    var diffInHours = (d1H + 24 * d1D + 720 * d1M + 12 * d1Y) - (d2H + 24 * d2D + 720 * d2M + 12 * d2Y);
    if (diffInHours <= 1) return "1 Hour";
    else if (diffInHours < 23) return diffInHours + " Hours";
    var diffInDays = (d1D + 30 * d1M + 360 * d1Y) - (d2D + 30 * d2M + 360 * d2Y);
    if (diffInDays < 7) return diffInDays + " days";
    else if (diffInDays > 7 && diffInDays < 14) return "1 week";
    else if (diffInDays >= 14 && diffInDays < 30) return Math.floor(diffInDays / 7) + "     weeks";
    var diffInMonths = (d1M + 12 * d1Y) - (d2M + 12 * d2Y);
    if (diffInMonths <= 1) return "1 month";
    else if (diffInMonths < 12) return diffInMonths + " months";
    var diffInYears = Math.floor(diffInMonths / 12);
    if (diffInYears <= 1) return "1 year";
    else if (diffInYears < 12) return diffInYears + " years";
}

我试着做一个几分钟:

var d1T = d1.getMinutes();
var d2T = parseInt(splitTime[1], 10);
var diffInMinutes = (d1T + 60 *d1H + 24 * d1D + 360 * d1M + 12 * d1Y) - (d2T + 60 *d2H + 24 * d2D + 360 * d2M + 12 * d2Y);

if (diffInHours <= 1) return diffInMinutes + " minutes";

但是,当我添加第二组代码时,分钟显示不正确。例如,7 分钟前上传的视频将显示为“947 分钟前”。

【问题讨论】:

  • 使用像 moment.js 或 timeago 这样的库
  • 但是...如何将 timeago 之类的库实现到我的脚本中以与 youtube 连接以确定视频上传了多长时间? @ArunPJohny
  • 欢迎来到Stack Overflow。 “不起作用”这个短语可能意味着很多事情,在它们的各个方面都不同。它经常被过度使用,并且不会对您的问题增加太多。考虑通过描述手头的具体问题以及您的代码如何“不起作用”来改进您的帖子。谢谢!
  • 它不起作用...请允许我重新措辞。当我添加第二组代码时,显示的分钟数不正确。例如,7 分钟前上传的视频将显示为“947 分钟前”@Qantas94Heavy
  • @user2998050:谢谢,这样好多了。

标签: javascript jquery youtube


【解决方案1】:

试试Moment.js,这样可以节省所有工作。

【讨论】:

  • 我如何使用 Moment.JS 并将其实现到我现有的代码中以从 youtube 查找上传日期
  • @user2998050 我不知道你的timestamp 的格式,但格式看起来像2013-02-08T09:30:26。如果是这样,moment.js 可以直接解析。只需包含它并调用moment(timestamp).fromNow(),它就会返回像2 hours ago 这样的字符串。
【解决方案2】:

条件写入:

if (diffInMinutes <= 60) return diffInMinutes + " minutes";

而不是

if (diffInHours <= 1) return diffInMinutes + " minutes";

如果它也不起作用,请使用

var diff = endDate.getTime() - startDate.getTime();
var hours = Math.floor(diff / 1000 / 60 / 60);
diff -= hours * 1000 * 60 * 60;
var minutes = Math.floor(diff / 1000 / 60);

希望它会起作用。

【讨论】:

  • 通过提醒你能告诉我d1T,d1H,d1D,d1M,d1Y,d2T,,d2H,d2D,d2M,d2Y的值
  • d1T = 分钟 d1H = 小时 d1D= 天 d1M= 月 d1Y= 年,对于 D2T... d2H...
猜你喜欢
  • 2018-06-04
  • 2013-10-24
  • 2012-05-06
  • 2013-12-11
  • 2017-02-06
  • 1970-01-01
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多