0

Web サイトのコンテンツの年齢を計算するコードを作成しました。それは非効率的であり、計算は途方もなく進んでいます。このスクリプトは以前にも書いたことがあり、前回は完全に機能しましたが、スクリプトが入っているファイルが見つかりません。

計算の問題はその年が原因だと思います。誰かが私のために修正を提案できますか? 作成された日付形式は YYYYMMDD で、出力は週全体です (これは重要です)。つまり、以下の例では「52」週が出力されます。

var created='20120223';
var year=Number(created.substr(0,4));
var month=Number(created.substr(4,2))-1;
var day=Number(created.substr(6,2));
var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth() + 1;
var curr_year = d.getFullYear();
var input_age = ((((curr_year - year)*31536000) + ((curr_month - month)*2678400) + ((curr_date - day)*86400))/604800).toFixed(0);
document.getElementById('item12345_input').value = input_age + ' weeks';
4

4 に答える 4

2

最初に月を差し引いています。次に、再び月を追加します。これを試して

    var created='20120223';
var year=Number(created.substr(0,4));
var month=Number(created.substr(4,2))-1;
var day=Number(created.substr(6,2));
var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
var input_age = ((((curr_year - year)*31536000) + ((curr_month - month)*2678400) + ((curr_date - day)*86400))/604800).toFixed(0);
alert(input_age + ' weeks');
于 2013-02-23T05:47:45.450 に答える
0

2つの日付を引くだけです。

var createdDate = new Date(
    +created.substring(0, 4),  // Four digit year
    created.substring(4, 6)-1, // Base-zero month
    +created.substring(6, 8)); // Day of month
var ageMillis = (new Date) - createdDate;
var MS_PER_WEEK = 1000/* ms /sec */
                * 60  /* sec/min */
                * 60  /* min/hr  */
                * 24  /* hr /day */
                * 7   /* day/wk  */;
var ageWeeks = ageMillis / MS_PER_WEEK;
于 2013-02-23T05:41:50.557 に答える