DateTime クラス
DateTimeの使い方を出来る限り纏めていきます。(随時更新)
現在日時
フォーマット(秒精度) YYYY-MM-DD HH:MM:SS
Today
// 今日の日付
$today = new \DateTime ();
// 今日の日付 フォーマット YYYYMMDD
$today_Ymd = $today->format ( 'Ymd' ); // string(8) "20180522"
// 今日の日付 フォーマット YYYY-MM-DD HH:MM:SS
$today_YmdHis = $today->format ( 'Y-m-d H:i:s' ); // string(19) "2018-05-22 17:25:28"
フォーマット(マイクロ秒精度) YYYY-MM-DD HH:MM:SS.U
Today
// 現在日時 マイクロ秒精度
$now = \DateTime::createFromFormat('U.u', sprintf('%6F', microtime(true)));
// 現在日時 フォーマット YYYY-MM-DD HH:MM:SS.U
$now = $now->format('Y-m-d H:i:s.u'); // string(26) "2018-05-22 08:25:28.406171"
指定日時
DateTime
// 先月の初めての水曜日 フォーマット YYYY-MM-DD HH:MM:SS
$date_fsolm = new \DateTime ( 'first wednesday of last month' );
$date_fsolm = $date_fsolm->format( 'Y-m-d H:i:s' ); // string(19) "2018-04-04 00:00:00"
// 今月の最後の金曜日 フォーマット YYYY-MM-DD
$date_lfotm= new \DateTime ( 'last friday of this month' );
$date_lfotm= $date_lfotm->format( 'Y-m-d' ); // string(10) "2018-05-25"
// 今日から一ヶ月前 フォーマット YYYY-MM-DD
$date_1ma = new \DateTime ( '1 months ago' );
$date_1ma = $date_1ma->format( 'Y-m-d' ); // string(10) "2018-04-22"
// 今日から一ヶ月後 フォーマット YYYY-MM-DD
$date_nm = new \DateTime ( 'next months ' );
$date_nm = $date_nm ->format( 'Y-m-d' ); // string(10) "2018-06-22"
// 今日から20日後 フォーマット YYYY-MM-DD
$date_20d = new \DateTime ( '20 day' );
$date_20d = $date_20d->format( 'Y-m-d' ); // string(10) "2018-06-11"
// 今日から一週間前 フォーマット YYYY-MM-DD
$date_b1w = new \DateTime ( '-1 weeks' );
$date_b1w = $date_b1w->format( 'Y-m-d' ); // string(10) "2018-05-15"
// 現在から次の曜日 フォーマット YYYY-MM-DD
$dayname = new \DateTime ( 'Monday' );
$dayname = $dayname->format( 'Y-m-d' ); // string(10) "2018-05-28"
指定日時(比較)
DateTime
// 指定日付 フォーマット YYYYMMDD
$date = "20180522";
$dateTime = new \DateTime ( $date );
$dateTime = $dateTime ->format ( 'Ymd' );
// 日付の比較 ($dateは DateTime 形式ではないので、比較不可。)
if ($today > $dateTime ) {
// 指定日付は過去です。
} else {
// 指定日付は今日より未来です。
}
指定日時(時間間隔計算)
DateTime
// 先月の初日 0時0分0秒 フォーマット YYYYMMDD 00:00:00
$dateFrom = new \DateTime ( 'first day of last month' );
$dateFrom->setTime ( '00', '00', '00' );
$from = $dateFrom->format ( 'Ymd H:i:s' ); // string(17) "20180401 00:00:00"
// 先月の末日 23時59分59秒 フォーマット YYYYMMDD 23:59:59
$dateTo = new \DateTime ( 'last day of last month' );
$dateTo->setTime ( '23', '59', '59' );
$to = $dateTo->format ( 'Ymd H:i:s' ); // string(17) "20180430 23:59:59"
// 先月の初日~末日の時間間隔
$diff = $dateFrom->diff($dateTo);
// 時間間隔 フォーマット [+]/[-] X days
$diff_days = $diff->format('%R%a days'); // string(8) "+29 days"
// 時間間隔 フォーマット HH:MM:SS
$diff_HIS = $diff->format("%H:%I:%S"); // string(8) "23:59:59"
// 時間間隔 フォーマット X month, Y days
$diff_month = $diff->format('%m month, %d days'); //string(16) "0 month, 29 days"