メシのタネ

Webプログラミング 備忘録

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

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

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

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

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

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

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

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

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

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

    続きを読む

【PHP】 DateTimeクラス

shiraberu
日付を扱うにあたって今までdateとかstrtotimeとか使ってましたけど、
DateTimeクラスを使うのが良いよって事で、基本的に何ができるのか
ふんわーりと調べてみました。

今日の日時と日付の追加

DateTimeはクラスなのでクラスが良く分からない人は
@yandod先生のクラスの教室を見てもらうといいかもしれません。
一応クラスの教材を前の記事で紹介してます。無料です。


$createday = new DateTime();
$createday->setDate(2014,7,15)->setTime(0,10,30);

new DateTimeした時に何も渡さないと今日の情報が行きます。
setDateメソッドで日付を渡すとその日付の情報がオブジェクトに反映されます。
setTimeは時間の情報です。

出力する時はこうします。


var_dump($createday->format('Y-m-d H:i:s'));
var_dump($createday->format('U'));

この辺はdate()と一緒な感じがしました。

オブジェクト内の日付の変更

modifyメソッドを使えばオブジェクト無いの日付を進めたり、
戻したりとかできます。こんな感じです。


$createday = new DateTime();
$after3month = $createday->modify('+3 month')->format('Y-m-d H:i:s');
var_dump($after3month);
$today = $createday->modify('-3 month');
var_dump($today);

日付オブジェクト同士の差を計算する

何日経過したかを計算するのにdiffメソッドっていうのがあります。
二つ日付オブジェクトを作って、作った日付オブジェクトの差を計算します。


$today = new DateTime();
$after3month = new DateTime('+3 month');
var_dump($today->diff($after3month)->format('%R%mヶ月%d日 後'));
var_dump($today->diff($after3month)->format('%R%a日 後'));
$before3month = new DateTime('-3 month');
var_dump($today->diff($before3month)->format('%R%mヶ月%d日 前'));
var_dump($today->diff($before3month)->format('%R%a日 前'));

こんな感じで非常に便利なので、phpが5.2以上なら使ってみて下さい。
Windows版PHP 5.3.2だとdiff()が常に6015を返すバグがあるみたいです。

関連記事

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