我有一系列日期,我想提供格式' Y-m-d'但是当我尝试时,我收到错误
"在数组"
上调用成员函数格式()我之前做的是将两个日期传递给返回时间间隔的函数,例如,如果我给出以下两个日期:
scala> val cloned = original.map(_.clone)
cloned: Array[Array[Int]] = Array(Array(0, 0), Array(0, 0))
scala> original(0)(0) = 5000
scala> cloned(0)(0)
res43: Int = 0
//changing cloned does not change original array
scala> cloned(0)(0) = 8888
scala> original(0)(0)
res48: Int = 5000
此功能以Y-m-d格式返回
2017-06-05 | 2017-06-10
我之前没有格式化结果的问题,但是,现在我已经发送了一个已停止工作的数组,这是我的代码
"2017-06-06,2017-06-07,2017-06-08 ...
函数returnDates就是这个
public function testArray(Request $request)
{
if ($request!="" && $request->idUser!="")
{
$timeslot= new Timeslot;
$idUser=$request->idUser;
$fecha1=$request->fecha2;//array
$fecha2=$request->fecha1;//array
$slotD=$request->slotH;//array
$i=0;
$k=0;
$j=0;
foreach ($fecha1 as $key => $value) {
$date1[$k]=date('Y-m-d', strtotime($value));
$k++;
}
foreach ($fecha2 as $key => $value) {
$date2[$i]=date('Y-m-d', strtotime($value));
$i++;
}
foreach ($slotD as $key => $value) {
$value=str_replace("minutos","minutes",$value);
$slot[$j]=$value;
$j++;
}
$array=array("fechaInicio"=>$date1,"fechaFin"=>$date2,"slot"=>$slot);
for($l=0;$l<count($date1);$l++)
{
$datePeriod["periodo"][]=$timeslot->returnDates($date1[$l],$date2[$l]);//this method give me an array with date intervals
}
$dates=array();
$m=0;
foreach ($datePeriod as $key => $value)
{
$dates[$m][$key]=$value->format('Y-m-d');//ERROR
$m++;
}
}
return $dates;
}
当我使用变量$ datePeriod作为公共变量时,我得到了我想要的结果
function returnDates($fromdate, $todate) {
$fromdate = DateTime::createFromFormat('Y-m-d', $fromdate);
$todate = DateTime::createFromFormat('Y-m-d', $todate);
return new DatePeriod(
$fromdate,
new DateInterval('P1D'),
$todate->modify('+1 day')
);
}
当我将变量转换为关联数组时出现问题,在这种情况下我该怎么办?
如果我没有格式化日期,这是我得到的数组
for($l=0;$l<count($date1);$l++)
{
$datePeriod=$timeslot->returnDates($date1[$l],$date2[$l]);
}
Result:
[["2017-06-17"],{"1":"2017-06-18"},{"2":"2017-06-19"},{"3":"2017-06-20"},{"4":"2017-06-21"}]
*更新
这是我的时间段类的代码
[{"periodo":[{"start":{"date":"2017-06-17 18:20:35.000000","timezone_type":3,"timezone":"UTC"},"current":null,"end":{"date":"2017-06-22 18:20:35.000000","timezone_type":3,"timezone":"UTC"},"interval":{"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":false,"special_type":0,"special_amount":0,"have_weekday_relative":0,"have_special_relative":0},"recurrences":1,"include_start_date":true}
,{"start":{"date":"2017-06-17 18:20:35.000000","timezone_type":3,"timezone":"UTC"},"current":null,"end":{"date":"2017-06-22 18:20:35.000000","timezone_type":3,"timezone":"UTC"},"interval":{"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":false,"special_type":0,"special_amount":0,"have_weekday_relative":0,"have_special_relative":0},"recurrences":1,"include_start_date":true},{"start":{"date":"2017-06-17 18:20:35.000000","timezone_type":3,"timezone":"UTC"},"current":null,"end":{"date":"2017-06-22 18:20:35.000000","timezone_type":3,"timezone":"UTC"},"interval":{"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":false,"special_type":0,"special_amount":0,"have_weekday_relative":0,"have_special_relative":0},"recurrences":1,"include_start_date":true}]}]
答案 0 :(得分:1)
听起来$value
不是对象DateTime
的实例。
尝试替换此行:
$dates[$m][$key]=$value->format('Y-m-d');//ERROR
这两个:
$timestamp = strtotime($value);
$dates[$m][$key]=date('Y-m-d',$timestamp);//NO ERROR? :-)
您也可以将它组合成一行:
$dates[$m][$key]=date('Y-m-d',strtotime($value));//NO ERROR? :-)
答案 1 :(得分:0)
在解析之前格式化日期应该可以解决问题
$value['date'] = date('Y-m-d',strtotime($value['date']));
$dates[$m][$key]=$value;
//This returns the array with the date formatted
或强>
$dates[$m][$key]=date('Y-m-d',strtotime($value['date']));
//This returns just the formatted dates