0

日付オブジェクトを使用して、ラップする週をどのように計算できますか?

例:

7月31日(火)は38週目で終了しますが、38週目は日曜日(8月4日)に終了します。

ただし、月は異なります

これに関するアイデア

皆さんありがとう

4

2 に答える 2

1

カレンダーコンポーネントでは、このコードを使用して1週間の最初の日付を計算します。そして、私はそれが週の最後の日付を見つけるために修正されるかもしれないに違いない。ITはDateUtilsライブラリを利用します

    public static const DAY_OF_MONTH:String = "date";

    /**
     * This method gets the first date of the week which the given date is in.
     * 
     * @param date  This is the date for which we want to process.
     * @param firstDayOfWeek    The first day of the week, 0 (Sunday) - 6 (Saturday); 0 is the default.  It will probably be used primarily for localization purposes.
     * 
     * @return      This returns a date representing the first day of the week.
     */
    public static function firstDateOfWeek( date:Date, firstDayOfWeek : int = 0 ):Date {
        var dayIncrement : int = dayOfWeekLocalized(date, firstDayOfWeek);

        var returnDate : Date = DateUtils.dateAdd(DateUtils.DAY_OF_MONTH,-dayIncrement,date);
        return returnDate; 

    }

    /**
     * This method returns the position of the day in a week, with respect to the firstDayOfWeek localization variable. 
     * 
     * If firstDayOfWeek is 0; then the week is display 0 (Sunday), 1 (Monday), 2 (Tuesday), 3 (Wednesday), 4 (Thursday), 5 (Friday), 6 (Saturday).  
     * So, a Sunday would return 0, a Saturday would return 6, and so on.  
     * 
     * If firstDayOfWeek is 1; then the week is displayed as 0 (Monday), 1 (Tuesday), 2 (Wednesday), 3 (Thursday), 4 (Friday), 5 (Saturday), 6 (Sunday). 
     * However, this situation will not change the date.day value.  For display purposes we need a Sunday to return 6, a Saturday to return 5, and so on.
     * 
     * This will presumably be used for display purposes.
     * 
     * @param date  This is the date to process.
     * @param firstDayOfWeek    The first day of the week, 0 (Sunday) - 6 (Saturday); 0 is the default.  It will probably be used primarily for localization purposes.
     * 
     * @return      This returns a date representing the day’s location on the localized week display.
     */
    public static function dayOfWeekLocalized( date:Date, firstDayOfWeek : int = 0 ):int {
        var result : int = date.day - firstDayOfWeek;
        if(result < 0){
            result += 7;
        }

        return result;

    }

週の最後の日付を見つけるには、firstDateOfWeekを呼び出して、6日を追加するだけでよいと思います。

    public static function lastDateOfWeek( date:Date, firstDayOfWeek : int = 0 ):Date {
        var firstDateOfWeek : Date = firstDateOfWeek(date, firstDayOfWeek);

        var returnDate : Date = DateUtils.dateAdd(DateUtils.DAY_OF_MONTH,6,firstDateOfWeek );
        return returnDate; 
    }

注:コードの2番目のバッチはブラウザーで記述されており、完全にテストされていません。


更新:特定の日付を指定すると、 DateUtilsライブラリのweekOfYearメソッドを使用してweekOfYear番号を確認できます。上記の方法を使用して、問題の週の最初と最後の日付を見つけます

概念的には次のようになります。

var weekOfYear : Number = DateUtils.weekOfYear(myDate);
var firstDayOfWeek : Date = firstDateOfWeek(myDate);
var lastDayOfWeek : Date = lastDateOfWeek(myDate);
于 2012-07-10T16:43:52.867 に答える
0

私はこのブログ投稿でこの質問に対処しました。とても簡単です。ある月の最終日は、翌月の初日より1日少なくなります。最終日が土曜日でない場合は、重複があります。

于 2012-07-10T17:06:36.523 に答える