メシのタネ

Webプログラミング 備忘録

  • DOMをPHPで操作できたらいいよね

    そうだよね。そう思うよね。JavaScriptでやると、画面がガタついたりするもんね。そうならないようにする方法もあるかもしれないけど、僕はできませんので、サーバー側でなんとかできたらええなぁと思って挑戦したけど、できませんでしたよ。PHP標準でHTMLをDOMにできるらしい今、技[...]

    続きを読む
  • 設計書ってなんで書くの?

    設計書をなぜ書くのかから始めてかれこれ3年近くこの禅問答をやっているわけですが、いまだに答えは出ません。ただ、その禅問答をやる中で設計書に対する取り組み方は大きく変わったので、その一部でも書いていきたい。基本設計はとにもかくにも必要だと思う設計書はいらぬ!という話をよく聞くし、自分[...]

    続きを読む
  • 書ききってやる。

    久々に書いてみる。久々に文章を書くということをやってみようと思う。伝える作業を観察したいと思ったからそうしたいと考えた。情緒的な文章は基本的にゴミ箱にぽいしてきましたが、情緒的なのも自分だと思う。「文章をかくという作業は、とりもなおさず自分と自分をとりまく事物との距離を確認すること[...]

    続きを読む
  • 普通の会社で2年普通に働いて思う事

    えらい寒くなりました。文句言いながらも現職を続けて2017年12月1日にめでたく2年がたちました。分かりやすいが乱暴に言えばITドカタと呼ばれる業界に入って案件のヒエラルキーの無慈悲さを痛感しながらも、それでもしょうがないと頑張る人たちに心を打たれながら「じゃあ俺も」と頑張れない自分に挫折して、とあ[...]

    続きを読む
  • jQueryUiのDatepicker利用時にminDate設定するとバグる件

    題名の通りなんですが、DatepickerでminDate使うとバグります。また後でキャプチャ見て貰いますけど、灰色の部分が、minDateで設定した日付が反復して出るようになるんですね。こういうの気が付かない人がいるかも知れませんが、ChoromeでminDate設定してる人は気にしてみてくだ[...]

    続きを読む

【PHP】DateTime活用例

PPG_anteli-kunatokei

この間DateTimeの基本的なことを書いてみました。
今回はちょっと、それを実践的に書いてみたら
どーなるかなーと思って書いてみました。

今日から3ヵ月後の-1日

パラメータにこうやって入れる事もできます。
このパラメタの値はマニュアルに書いてあります。
色々やれそうな感じですねぇ。


//3ヵ月後-1日
$afterobj = new DateTime("+3month -1day");
echo $afterobj->format("Y-m-d");

今日から3ヵ月後の最終日

結構業務プログラムとかでこういうのやる時があります。
なので僕にとってこういうの重宝します。

//3ヵ月後の最終日
$aftermonth = new DateTime("last day of +3month");
echo $aftermonth->format("Y-m-d");
$afterobjperiod = new DateTime();
echo $afterobjperiod->format("Y-m-d");

2014年8月31日から三ヵ月後の日付

指定日付でも、+3monthとかできちゃいます。

//8/31日から三ヵ月後の日付
$new = new DateTime();
$new->setDate(2014,8,31);
echo $new->modify("+3 month")->format("Y-m-d");

今日から三ヵ月後の第三水曜日

以前聞かれたプログラム。
44行くらい1年前にコード書いたけど
今はたったこれだけで済みます。
というか、自分じゃない人が書いたら
もっと短くなるんぢゃないでしょうか。


//3ヶ月後の第三水曜日取得
$start = new DateTime("first day of +3month");
$interval = new DateInterval('P1D');
$afterSeven = new DateTime("+3month +7days");
$period = new DatePeriod($start,$interval,$afterSeven);

foreach($period as $obj)
{
     if($obj->format("D") == "Wed")
     {
          $date = $obj->format("Y-m-d");
          break;
     }
}

$week3after = new DateTime($date);
echo $week3after->modify("+3week")->format("Y-m-d D");

コッチ試してないけど、これでも同じ意味になりそうですね。


$week = new DateTime();
for($i=0; $i<7; $i++)
{
     if($week->setDate(2014,10,$i)->format("D") == "Wed")
     {
          break;
     }
}

echo $week->modify("+3week")->format("Y-m-d D").PHP_EOL;

関連記事

  1. 2012.12.07

    【PHP】Cakephp
  2. PHPサムネイル
  3. 2012.09.19

    【PHP】クラス

コメントをお待ちしております