簡體   English   中英

如何使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM