0

YouTube チャンネルをウェブサイトに埋め込むことができる YouMax プラグインを使用しています。ただし、アップロードされた日付が月と年で表示されるため、問題が発生しています。日、週、月、年を表示したいと思います。

ここでソースコードを表示できます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() 関数が 0 から始まるインデックスで月を返し、1 から始まるインデックスに切り替えない限り、計算が信頼できないためです。

于 2013-08-17T19:46:49.610 に答える