- 締切済み
月曜日から始まるカレンダ
日曜日から始まるカレンダは作れたのですが… これを変えて例えば月曜日から始まるカレンダを作りたいと思っています。 現状は、 ##########ここから########## ----------Calendar.class.php---------- class Calendar { protected static $DTO; // constructor public function __construct() { self::$DTO = new DateTime(); } // destructor public function __destruct() { } protected static function valid( $year = null, $month = null, $day = null ) { $valid = array (); if ( false === is_numeric( $year ) ) { $year = self::$DTO->format( 'Y' ); } if ( false === is_numeric( $month ) ) { $month = self::$DTO->format( 'n' ); } if ( false === is_numeric( $day ) ) { $day = self::$DTO->format( 'j' ); } self::$DTO->setDate( $year, $month, $day ); $valid[ 'year' ] = ( int ) self::$DTO->format( 'Y' ); $valid[ 'month' ] = ( int ) self::$DTO->format( 'n' ); $valid[ 'day' ] = ( int ) self::$DTO->format( 'j' ); return ( $valid ); } } ----------CalendarMonth.class.php---------- class CalendarMonth extends Calendar { // constructor public function __construct() { parent::__construct(); } // destructor public function __destruct() { parent::__destruct(); } public function parse( $year = null, $month = null ) { foreach ( parent::valid( $year, $month ) as $key => $value ) { if ( 'day' != $key ) { $parse[ 0 ][ $key ] = $value; } else { $parse[ 0 ][ 'days' ] = ( int ) parent::$DTO->format( 't' ); } } for ( $i = 0, $weeks = 1; $i < 42; $i++ ) { parent::$DTO->setDate( $parse[ 0 ][ 'year' ], $parse[ 0 ][ 'month' ], 1 ); $first_week = ( int ) parent::$DTO->format( 'w' ); if ( $i < $first_week ) { parent::$DTO->modify( '-' . ( 86400 * ( $first_week - $i ) . ' seconds' ) ); } else { parent::$DTO->modify( '+' . ( 86400 * ( $i - $first_week ) . ' seconds' ) ); } $parse[ $weeks ][ $i ][ 'year' ] = ( int ) parent::$DTO->format( 'Y' ); $parse[ $weeks ][ $i ][ 'month' ] = ( int ) parent::$DTO->format( 'n' ); $parse[ $weeks ][ $i ][ 'day' ] = ( int ) parent::$DTO->format( 'j' ); if ( 0 == ( ( $i + 1 ) % 7 ) ) { $weeks++; } } return ( $parse ); } } ----------CalendarMonth.html---------- <table border="1"> <?php include ( 'Calendar.class.php' ); include ( 'CalendarMonth.class.php' ); $CalendarMonth = new CalendarMonth(); $calendar = $CalendarMonth->parse(); for ( $i = 0; $i < count( $calendar ); $i++ ) { if ( 0 != $i ) { ?> <tr> <?php foreach ( $calendar[ $i ] as $week ) { ?> <td><?php echo ( $week[ 'year' ] . '-' . $week[ 'month' ] . '-' . $week[ 'day' ] ); ?></td> <?php } ?> </tr> <?php } } ?> </table> ##########ここまで########## 以上です。 文字数制限のため、次へ続く。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- TA-HT81S
- ベストアンサー率39% (72/184)
if ( 0 == ( ( $i + 1 ) % 7 ) ) を if ( 0 == ( ( $i + 7 ) % 7 ) ) にしてみたら? ってか、質問長すぎ。
補足
>ってか、質問長すぎ。 ソースそのまま張っちゃ駄目でしたか… ごめんなさい。 表題と外れるのですが… どこかに、ソースをアップロードした方が良かったでしょうか?