私は予約システムを作成しています。このシステムでは、ユーザーAは個人利用可能時間をデータベースに挿入できます。私はstart_time
とend_time
のようにこれらをタイムスタンプとしてMySqlデータベースに保存しています。ユーザーが00:00:00
の間の時間を選択すると、14:00:00
というコードは完全に機能します。私は30分の間隔を生成し、時間を格納します。ユーザーが選択したときに、00:00:00
〜00:00:00
またはmidnight
の場合は、正しいDatePeriod
が得られますが、これを30分間隔で分割すると、最後の時刻が現在の日付で00:00:00
と表示されますが、次の日になるのは00:00:00
です。PHP DatePeriodが期待どおりに機能しない
これは私が現時点で持っているものです。
//get variables
$start_date = Input::get('start');
$end_date = Input::get('end');
$startDate = new DateTime($start_date);
$endDate = new DateTime($end_date);
$interval = new DateInterval('PT30M'); //interval of 30 minutes
$available_times_date_range = new DatePeriod($startDate, $interval ,$endDate);
//store the times in array
foreach($available_times_date_range as $available_date){
$dates_and_times[] = [
'start_time' => $available_date->format("Y-m-d")." ".$available_date->format("H:i:s"),
'end_time' => $available_date->format("Y-m-d")." ".$available_date->add($interval)->format("H:i:s")
];
}
//insert to database
foreach ($dates_and_times as $date_and_time) {
$test[] = $date_and_time['end_time'];
$start_time = $date_and_time['start_time'];
$end_time = $date_and_time['end_time'];
//insert
// Nanny_availability::addAvailability($start_time, $end_time);
}
私は真夜中から真夜中まで選択すると、私はこのjson
が$available_times_date_range
{
"start":{
"date":"2017-11-30 00:00:00.000000",
"timezone_type":3,
"timezone":"Europe\/Helsinki"
},
"current":{
"date":"2017-12-01 00:00:00.000000",
"timezone_type":3,
"timezone":"Europe\/Helsinki"
},
"end":{
"date":"2017-12-01 00:00:00.000000",
"timezone_type":3,
"timezone":"Europe\/Helsinki"
},
"interval":{
"y":0,
"m":0,
"d":0,
"h":0,
"i":30,
"s":0,
"weekday":0,
"weekday_behavior":0,
"first_last_day_of":0,
"invert":0,
"days":false,
"special_type":0,
"special_amount":0,
"have_weekday_relative":0,
"have_special_relative":0
},
"recurrences":1,
"include_start_date":true
}
から返されたが、私のforeach($available_times_date_range as $available_date)
に私のような応答をゲットこれは:
[
{
"start_time":"2017-11-30 00:00:00",
"end_time":"2017-11-30 00:30:00"
},
//all the other objects
{
"start_time":"2017-11-30 23:30:00",
"end_time":"2017-11-30 00:00:00"
}
]
So最後のend_time
は2017-12-01 00:00:00
である必要があります。それをどうすれば実現できますか?
ありがとうございました!一日中それで賑わっていましたが、その結果はとても簡単でした。再度、感謝します – raqulka