2017-08-11 82 views
-4

我试图用这个月的最后一天,以取代目前的一天,但错误返回调用成员函数的setDate()的字符串

调用成员函数的setDate()的字符串

在最后一行。除了功能的setDate

//current date which is 2017-08-28 10:50:30 
$string = $date1; 
$dateM = DateTime::createFromFormat("Y-m-d H:i:s", $string); 
//getting the day of the month which is 28 
$dateMonth = $dateM->format("d"); 
//if the day is 28 
if($dateMonth >= 28){ 
    //change the day to 31 
    $dateMonth = 31; 
    //current date which is 28/08/2017 
    $out = $date1; 
    //replace 28 with 31 
    $date1 = $out->setDate($out->format('Y'), $out->format('m'), $dateMonth , $out->format('H'), $out->format('i'), $out->format('s')); 
} 
+0

是什么'$ date1'? – Neodan

+0

看来$ date1是一个字符串,而不是日期文字。尝试使用$ dateM。 – jeff

+0

第二行,''$ out-> setDate''-out是一个字符串,因此没有''setDate''函数。 – alistaircol

回答

0

您可以DateTimeformat函数格式说明使用t

date format specifiers

格式字符:吨

描述:天中的特定月份

返回值例子数量:28至31

<?php 
$input = '2017-08-28 10:50:30'; 

$date_time = DateTime::createFromFormat('Y-m-d H:i:s', $input); 
$last_day_of_month = $date_time->format('Y-m-t H:i:s'); 

echo $last_day_of_month; 

这给:

2017-08-31 10:50:30 

演示:https://eval.in/844314

+0

谢谢,这帮了我很多 –

0

该错误消息说,一切正常,这是$outString对象DateTime。所以你混淆了一些东西。

也许应该是$out = $dateM;而不是$out = $date1;

+0

亚我已经注意到,这是我的不好 –

0

设置$dateMonth31可能不是一个好主意,因为几个月来已30天。PHP的data function允许您使用t的格式,让你在给定月份的天数。所以,你可以用它来获取当前月份的最后一天:

date("Y-m-t")

相关问题