質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

2994閲覧

CakePHP3.4.2 コントローラーにて今月も月末月初を取得し、それぞれに15日分加算・減算したい

kojirooooooo

総合スコア9

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

1グッド

0クリップ

投稿2017/03/14 06:19

編集2017/03/14 06:46

CakePHP3.4.xでの、日付の取得の操作についてご質問します。

コントローラーにて、今月の月末・月初をそれぞれ取得することは可能でしょうか?

クックブックを見たところ、たとえば「現在日時から15日後」などの取得はできるようですが、今月の月末・月初の日付を取得することはできないでしょうか?
CakePHP3.4 Cookbook

その後、月末・月初の日付を取得したら、月初に15日を減算し、月末には15日を加算したいです。

PHP5.6ネイティブで実装しようとすると、こんな感じです。

//月初を取得して15日減算 $firstThisMonth = new DateTime('first day of this month'); $firstThisMonth->sub(new DateInterval('P15D')); $start_month = $firstThisMonth->format('Y-m-d'); //月末を取得して15日加算 $lastThisMonth = new DateTime('last day of this month') $lastThisMonth->add(new DateInterval('P15D')); $last_month = $lastThisMonth->format('Y-m-d');

上記のように、'2017-03-01'とか'2017-03-31'といった形でまず取得し、最終的には、'2017-02-14'と'2017-04-15'とか、「今月の月初-15日」と、「今月の月末+15日」といった形の値がほしいです。

KiyoshiMotoki👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

php

1$fdom = (new DateTime())->modify('first day of this month'); 2$ldom = (new DateTime())->modify('last day of this month'); 3var_dump($fdom); 4var_dump($ldom); 5// string(10) "2017-03-01" 6// string(10) "2017-03-31" 7 8$fdom->modify('15 days ago'); 9$ldom->modify('+15 days'); 10var_dump($fdom->format('Y-m-d')); 11var_dump($ldom->format('Y-m-d')); 12// string(10) "2017-02-14" 13// string(10) "2017-04-15"

こういうことではなく?

投稿2017/03/14 06:34

編集2017/03/14 06:47
turbgraphics200

総合スコア4267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kojirooooooo

2017/03/14 06:43

早速のご回答、ありがとうございます。 add()していたのは、取得した'2017-03-01'とか'2017-03-31'から、15日を加算したり、減算したいからですね。 最終的にほしい値は、'2017-02-15'と'2017-04-15'とか、「今月の月初-15日」と、「今月の月末+15日」です。わかりにくくてすいません。
kojirooooooo

2017/03/14 07:34

ありがとうございます、解決しました! あと、CakePHPのコントローラーで、「DatetimeのようなPHPのデフォルトクラスを使用しようとするとエラーになる」ことが問題の原因でもありました。 CakePHP3でDatetimeクラスなどのPHP標準クラスを使う http://antares088116.blogspot.jp/2015/09/cakephp3datetimephp.html
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問