【问题标题】:javascript Date Object how long agojavascript 日期对象多久以前
【发布时间】:2013-08-20 08:34:21
【问题描述】:

我试图显示多久前上传了一个视频,我似乎无法让日期对象方法在这个脚本中工作的小时和分钟。我正在编写一个名为YouMax 2.0 的脚本,并且我一直在编辑函数getDateDiff,我想出了这个edit of the function。感谢您对此提供的任何帮助。

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 d1T = d1.getMinutes();
var d2T = parseInt(splitTime[1], 10);
var diffInMinutes = (d1T + 59 * d1H + 23) - (d2T + 59 * d2H + 23);
if (diffInMinutes <= 1) return "1 Minute";
else if (diffInMinutes <= 59) return diffInMinutes + " Minutes";
var diffInHours = (d1H + 23 * d1M) - (d2H + 23 * d1M);
if (diffInHours <= 1) return "1 Hour";
else if (diffInHours < 23) return diffInHours + " Hours";
var diffInDays = (d1D + 30 * d1M + 12 * d1Y) - (d2D + 30 * d2M + 12 * 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";
}

我的新函数只返回分钟和其他,不会更新到日期的变化

【问题讨论】:

标签: javascript function datediff


【解决方案1】:

我假设您正在从 mysql 数据库中获取时间戳。这也得到了回答here。最佳答案是在 php 中,但它与 Javascript 并没有真正的不同。不过,我确实建议使用 php。

【讨论】:

  • 我明白你的意思,但由于我使用的是用 javascript 编码的其他脚本,我无法将其更改为 php
【解决方案2】:

您可以看到您的拆分不正确... 这工作正常..

var splitDate = ((timestamp.toString().split('T'))[0]).split('-');
var splitTime = ((timestamp.toString().split('T'))[1]).split(':');
var splitTime1 = ((splitTime[2].toString().split('Z'))[0]).split('.');

splitDate[0] = Year;
splitDate[1] = Month;
splitDate[2] = Day;

splitTime[0] = Hours;
splitTime[1] = Minutes;
splitTime1[0] = Seconds;
splitTime1[1] = MilliSeconds;

你现在可以做任何你想做的事了..

【讨论】:

  • 您是否可以将您的解决方案发布到 jsfiddle.net
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 2015-01-18
相关资源
最近更新 更多