![](/img/trans.png)
[英]Get the current time and date by using DateTime::createFromFormat
[英]How to get year fom a date using DateTime::createFromFormat()?
我想從日期中獲取日,月和年,但是它不起作用。 我總是得到一個錯誤:
致命錯誤:在第4行的printtest.php中的非對象上調用成員函數format()
這是我的printtest.php
代碼。 我有一個錯誤。 如何解決這個問題? 在此處查看現場演示。
<?php
$dob = $_POST['dob'];
$date = DateTime::createFromFormat("Y-m-d", '$dob');
$year1 = $date->format("Y");
$day1 = $date->format("d");
$mon3 = $date->format("m");
echo $year1;
?>
如Alessandro所說,刪除dob變量周圍的單引號,但根據您的示例站點,輸入字段的格式為dmY
,而您傳遞的格式為Ymd
。
所以改變
$date = DateTime::createFromFormat("Y-m-d", '$dob');
成為
$date = DateTime::createFromFormat("d-m-Y", $dob);
Try the below code to get the Year
<?php
$dob = $_POST['dob'];
$date = explode("-",$dob);
$year1 = $date[2];
echo $year1;
?>
變量插值僅發生在雙引號字符串中,因此此代碼試圖將字符串“ $ dob”解析為Ymd日期,而不是解析變量$dob
包含的字符串。 可以通過將DateTime::createFromFormat("Ymd", '$dob')
更改為DateTime::createFromFormat("Ymd", "$dob")
另外,由於您可能無法控制發布到腳本中的值,因此在嘗試操作其返回值之前,應檢查DateTime::createFromFormat()
返回了一個對象(失敗時返回false),例如
$date = DateTime::createFromFormat("Y-m-d", "$dob");
if (!$date)
{
echo "Invalid dob (YYYY-mm-dd): $dob";
exit;
}
$year1 = $date->format("Y");
$day1 = $date->format("d");
$mon3 = $date->format("m");
echo $year1;
這樣,如果發布了不能解析為Ymd日期的Dob,您將不會收到相同的致命錯誤,而是一條更有用的“ Invalid dob”消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.