0

我一直在使用 YouMax 插件,它可以让您将 YouTube 频道嵌入您的网站。但是,我遇到了问题,因为它以月和年显示上传的日期。我希望它显示天、周、月和年。

您可以在此处查看源代码http://jsfiddle.net/wCKKU/

我相信它需要调整以使其按天、周、月和年计算。

function getDateDiff(timestamp) {
if (null == timestamp || timestamp == "" || timestamp == "undefined") return "?";
var splitDate = ((timestamp.toString().split('T'))[0]).split('-');
var d1 = new Date();
var d1Y = d1.getFullYear();
var d2Y = parseInt(splitDate[0], 10);
var d1M = d1.getMonth();
var d2M = parseInt(splitDate[1], 10);
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"
}
4

1 回答 1

0

您可以通过函数中间的一小段代码来修改插件:

var d2M = parseInt(splitDate[1], 10); // this line is already there
var d1D = d1.getDate();
var d2D = parseInt(splitDate[2],10);
var diffInDays = (d1D + 30 *d1M + 12 * d1Y) - (d2D + 30 *d2M + 12 *d2Y);
if (diffInDays < 2) return "1 day";
else 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); // this line is already there

请注意,这不是处理问题的特别优雅的方式,但它与插件已经使用的编码风格相匹配,并且至少不会破坏其他任何东西。

此外,作为旁注,如果您正在修改插件代码,您将希望同时修复其中的错误。获取当前月份应如下所示:

var d1M = d1.getMonth() + 1;

这是因为在 Javascript 中,getMonth() 函数在从零开始的索引上返回月份,除非您将其切换到从一开始的索引,否则您的数学将不可靠。

于 2013-08-17T19:46:49.610 回答