• ベストアンサー

指定した期間の日付生成

unimentaiの回答

  • ベストアンサー
  • unimentai
  • ベストアンサー率70% (34/48)
回答No.2

#1の方のアルゴリズムで全く問題ないのですが、 strtotimeは日本人の私には扱いづらいので、 mktimeを良く使っています。 <?php // 入力データ $start = "2005/06/29"; $end = "2005/07/02"; // UNIXタイムスタンプ取得 list($sy,$sm,$sd) = explode("/",$start); list($ey,$em,$ed) = explode("/",$end); $su = mktime(0,0,0,$sm,$sd,$sy); $eu = mktime(0,0,0,$em,$ed,$ey); // 1日の秒数 $sec = 60 * 60 * 24; // 60秒 × 60分 × 24時間 // 日付取得 $key = 0; for ( $i = $su;$i <= $eu;$i += $sec ) { $dates[$key] = date("Y/m/d",$i); $key ++; } // 表示 print_r($dates); ?> 以上、ご参考までに。

ubaba12
質問者

お礼

サンプルまで作成していただきありがとうございます。 こちらでは mkdateを使用して通算秒数に変換しているという事 ですね。 ループが簡潔にできていてこんな事が出来るのかと 驚いています。 予想以上に簡単に出来ました。ありがとうございます。

関連するQ&A

  • セルへの日付入力で指定期間のみ入力できるようにしたいのです。

    セルへの日付入力で指定期間のみ入力できるようにしたいのです。 2つの方法を知りたいのですが、 一つ目は A11-A12と並んだセルで両方とも任意の日付入力欄となっています。 まずA12に任意の日付を入力した場合A11に入力できる日付をA12より前は打てないようにしたい。 (例)A12に2010/01/20--A11には2010/01/19---× (例)A12に2010/01/20--A11には2010/01/25---○ (例)A12に2010/01/20--A11には2010/02/25---○ 二つ目は 指定のセルに入力当日の前月以前は打てないが入力日(月も)以降は打てる (例)セルへの入力日2010/01/20--実際に入力する任意の日付2010/12/30---× (例)セルへの入力日2010/01/20--実際に入力する任意の日付2010/01/21---○ (例)セルへの入力日2010/01/20--実際に入力する任意の日付2010/02/11---○ こんな制限はできるのでしょうか。 ご教授をお願い致します。

  • 開始と終了を指定して、その間の日付を取得したい。

    開始と終了を指定して、その間の日付を取得したい。 C#(VS2008)環境です。 開始日と終了日を指定して、日付のリスト(できれば曜日を含む)が 戻ってくるようなメソッドを作りたいと思っています。 単純に、今月の1日から20日まで、とかならループして作れそうに 思うんですが。 たとえば、2010/02/20を開始、2010/03/20を終了とするような、 月をまたぐような場合にどうしよう…と悩んでいます。 (2010/02/20、2010/02/21、2010/02/22…というようなリストがほしい) アドバイスいただけないでしょうか。

  • accessで指定期間の曜日カウントしたい

    access2000を使用しています。 table1にID,start,endというフィールドがあって 1|2009/04/01|2009/04/30 2|2009/03/16|2009/04/15 といった具合にstart,endには日付が入っています。 startからendまでの期間、日曜日が何回あるかを表示させるクエリはどのようにすればできるでしょうか。 ID|start|end|日曜日の回数 と表示させたいです。 weekday関数でstart,endのそれぞれの曜日は取得できています。 datediff関数でstartからendまで何日あるかは計算できています。 そこから先、どのようにカウントすればよいでしょうか。 特に上記2つの関数を使用しなくてもカウントできるようであればそれでもよいです。宜しくお願いします。

  • エクセルで指定期間内に在職する対象者を抽出したいのです。

    お世話になっております。会社の在籍者名簿を作成したいのですが、次のような課題があります。 sheet1に以下のマスターデータがあります。   A    B     C    D     1 個人コード 所属コード 開始日付  終了日付 2  01   6000   2008/04/01 9999/12/31 3  02   1200   2008/03/01 9999/12/31 4  03    7000   2008/05/01 2008/05/20 5  04   1100   2008/03/01 9999/12/31 sheet2に期間以下の5月の在籍指定条件を設定します。 開始日付 2008/05/01 終了日付 2008/05/31 この期間内に該当する対象者が下記の通り抽出されます。   A    B     C    D     1 個人コード 所属コード 開始日付  終了日付 2  01   6000   2008/04/01 9999/12/31 3  02   1200   2008/03/01 9999/12/31 4  04   1100   2008/03/01 9999/12/31 日付についてのルールは以下の通りです。 A.個人コード03は、終了日付が2008/05/31前の為該当しません。月末まで在籍する方が対象となります。 B.在籍指定条件の開始日付より前に開始日付がスタートしている方は対象となります。 私の質問表現に曖昧な点がありましたらお許し下さい。ご回答をいただければ嬉しく存じます。宜しくお願い致します。

  • 引数で日付を2つ与え、その間の日付リストを取得したい。

    引数で日付を2つ与え、 その間の日付リストを取得できるようなメソッドを 作成したいのですが、どのようにすればいいのでしょうか・・? 例えば、以下のような感じです。 ●引数 1. 開始日(Date型) 例> 2003/4/12 2. 終了日(Date型)  例> 2003/6/25 ●戻り値 開始日と終了日の間の日付(Date型)のリスト 例>2003/4/12~2003/6/25までの日付のリスト↓ 4/12, 4/13, 4/14 ・・・・・ 6/23, 6/24, 6/25 が格納されたリスト

    • ベストアンサー
    • Java
  • エクセルで、指定期間及び指定部門に在職する対象者を抽出したいのです。

    お世話になっております。会社の在籍者名簿を作成したいのですが、次のような課題があります。 sheet1に以下のマスターデータがあります。   A    B     C    D     1 個人コード 所属コード 開始日付  終了日付 2  01   6000   2008/04/01 9999/12/31 3  02   1200   2008/03/01 9999/12/31 4  03    7000   2008/05/01 2008/05/20 5  04   1100   2008/03/01 9999/12/31 sheet2に期間以下の5月の在籍指定条件を設定します。 所属コード 1200及び1100 開始日付 2008/05/01 終了日付 2008/05/31 この期間内に該当する対象者が下記の通り抽出されます。   A    B     C    D     1 個人コード 所属コード 開始日付  終了日付 2  02   1200   2008/03/01 9999/12/31 3  04   1100   2008/03/01 9999/12/31 フィルタオプションの設定で抽出した際、複数の所属コードを指定して一気に抽出することは可能でしょうか?他に方法がありましたらお教え下さい。 私の質問表現に曖昧な点がありましたらお許し下さい。ご回答をいただければ嬉しく存じます。宜しくお願い致します。

  • ExcelのSUMPRODUCTで日付の範囲を指定する方法

    Excelの関数SUMPRODUCTを使って以下の事がしたいです。 方法が分かる方がいましたら、ご教授の程宜しくお願い致します。 【やりたい事】 ・添付資料の開始日~終了日の日付(文字列)を参照に日付の範囲を  2009/3/1~2009/3/31に指定したい。 ・指定した範囲の期間内の売り上げ個数を出したい。 以上回答の程宜しくお願い致します。

  • 指定日付を起点にして最新日付のデータを取得

    あるテーブルに対して、任意の日付を指定して、その日付より以前の 最新日付のデータのみを取得したいと考えているのですが、 可能でしょうか? どなたかご存知の方、ご教授願います。 (例)テーブル 登録日付   Data1  Data2 2008/12/01 ねこ  哺乳類   2008/12/03  たぬき 哺乳類 2008/12/05  きつね 哺乳類 2008/12/05  くじら 哺乳類 2008/12/09  たこ  軟体動物 2008/12/10  いか  軟体動物 2008/12/10  まぐろ 魚類 2008/12/12  いぬ  哺乳類 というテーブルにおいて日付を2008/12/08と指定した場合 それ以前の最新日付のデータとして 2008/12/05 きつね 哺乳類 2008/12/05 くじら 哺乳類 が取得できるようにしたいと思っています。 どなたか、ご教示お願いいたします。

  • 日付の指定

    教えて下さい。 Accessでフォームを作成し期間1、期間2というテキストに日付を自動で設定したいと思っています。 例) 2009年5月~2010年4月にフォームを立ち上げた場合 期間1には2008/04/01と初期指定される 2010年5月~2011年3月にフォームを立ち上げた場合 期間1には2009/04/01と初期指定される 2014年5月~2012年3月にフォームを立ち上げた場合 期間1には2010/04/01と初期指定される この様に設定したいのですがどの様にすれば良いのでしょうか?

  • [ASP+SQLserver]Varcher形式を日付として範囲指定。

    こんにちわ。 売上の期間指定出力をします。 varcher形式でSQLサーバに日付が格納されています。 ユーザがテキストボックスに日付を2つ(開始と終了)を入れます。 形式は yyyy/mm/dd でやるとして・・・。 Betweenで単純にSQL文を作ると・・・うまく評価できないのか 期間がむちゃくちゃです。 おそらく、日付だと認識していないからだと思うのですが・・・。 どのように処置してやればうまく日付だと認識し、期間指定ができますか? 宜しくお願い致します。