0

日付、期間ごとの週数、および年を含むテーブルがあります。次に、ユーザーが日付を入力すると、これから期間番号を計算できます。しかし、私は別の方法でもやりたいと思っています。期間番号を入力し、そこから期間の開始日と終了日を取得します。残念ながら、正しいロジックを取得できないようです。誰でもこれで私を案内できますか?

ありがとうございました。

編集: options[0] はデータベースからの開始日であり、options[1] は 1 期間の週数です。

これは私がすでに持っていて動作する関数です:

private function dateToPeriod(date:Date):Number
    {
        var d = new Date(options[0]);
        var periode = Math.floor((date.time - d.time)/(604800000*options[1])+1);
        return periode;
    }

開始日が 2009 年 12 月 12 日であるとすると、この関数に 12/12/2009 を渡すと、この日付 (週番号) からの最初の「期間」であるため、1 が返されます。

私が欲しいのは、 periodToDate 関数を作成することです。

4

1 に答える 1

1

新しい情報に基づいて編集された回答

さて、これは非常に簡単です。date プロパティに値を追加できます。これをもう一度試してください。テストはしていません。

public function addPeriodToDate(date:Date, period:int, numWeeksInPeriod:int):Date
{
    var periodDate:Date = new Date(date.time);
    periodDate.date += period * numWeeksInPeriod;
    return periodDate;
}

編集終了

私はこれをテストしていません。いくつかの簡単なコードですが、これで正しい方向に進むはずです。

private function dateToPeriod(date:Date):Number
{
    var d = new Date(options[0]);
    var diffInMilliseconds:Number = date.time - d.time;
    var diffInWeeks:Number = diffInMilliseconds / 1000 / 60 / 60 / 24 / 7;
    var weeksInPeriod:Number = options[1];
    var period:int = diffInWeeks / weeksInPeriod + 1;

    return period;
}
于 2009-12-31T19:51:10.107 に答える