PHPで2つの日付の間の日付を準備するにはどうすればよいですか?
DatePeriodを使用してメソッドを検索して見つけました。私はこの方法を試しましたが、結果が異なります。
DatePeriod Object
(
[start] => DateTime Object
(
[date] => 2017-11-23 02:09:17.000000
[timezone_type] => 3
[timezone] => Europe/Berlin
)
[current] =>
[end] => DateTime Object
(
[date] => 2017-11-23 05:09:17.000000
[timezone_type] => 3
[timezone] => Europe/Berlin
)
[interval] => DateInterval Object
(
[y] => 0
[m] => 0
[d] => 1
[h] => 0
[i] => 0
[s] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 0
[days] =>
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
[recurrences] => 1
[include_start_date] => 1
)
日付はjqueryの投稿から渡されています。
<?php
$dates = '02.09.17 - 05.09.17';
$daterange = explode(" - ", $dates);
$dateBegin = $daterange[0];
$dateEnd = $daterange[1];
$period = new DatePeriod(new DateTime($daterange[0]), new DateInterval('P1D'), new DateTime($daterange[1]));
print_r($period);
?>
DateTimeオブジェクトを作成するときに形式を指定する必要があります。ご覧のとおり、日付文字列を時間部分に配置しています。代わりに次のようなことをしてください。
$date = DateTime::createFromFormat('d.m.y', '02.09.17');
またはより具体的に:
$from = DateTime::createFromFormat('d.m.y', $daterange[0]);
$to = DateTime::createFromFormat('d.m.y', $daterange[1]);
$period = new DatePeriod($from, new DateInterval('P1D'), $to);
ちなみに、フォーマットが「dmy」なのか「mdy」なのかわからないので、適宜調整してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加