簡體   English   中英

我應該如何將任何類型的日期格式從數據庫轉換為這種格式“d/m/Y”?

[英]How should i convert any type of date format from database to this format "d/m/Y "?

有沒有辦法在 PHP 中將一種日期格式轉換為另一種日期格式?

$date=date_create($acalib_date);              //acalib_date provides the date from database

$newdate=date_format($date,"d/m/Y");       //changing the existing date format to d/m/Y

$newDate=date('d/m/Y', strtotime(("$newdate"). " + {$inst_calib_freq_obj->inst_calibration_freq_year} year". " + {$inst_calib_freq_obj->inst_calibration_freq_month} month"));          //here i getting the final date format

注意:在一種情況下它可以正常工作。

例如:我分配了3 年零 5 個月的校准期。 所以我將開始日期設置為12/12/2018 ,返回給我的輸出是12/05/2022

但在情況下,兩個,如果設置的開始日期為13/12/2018和輸出,是回我是2022年7月2日(歸期的原始輸出應為13/05/2022,我會怎么錯了這里?)

提前致謝!

12/12/2018格式實際上被解釋為美國日期格式month/day/year 這就是為什么當您指定13/12/2018時會得到意想不到的結果。

如果您改為使用DateTime::createFromFormat方法,並添加一個DateInterval ,則可以獲得您想要的結果。

編輯- 更新以支持可變年和月值。

$years = 3;
$months = 5;

$date = DateTime::createFromFormat('d/m/Y', '12/12/2018');
$date->add(new DateInterval("P{$years}Y${months}M"));
echo $date->format('d/m/Y');

$date = DateTime::createFromFormat('d/m/Y', '13/12/2018');
$date->add(new DateInterval("P{$years}Y${months}M"));
echo $date->format('d/m/Y');

閱讀DateTimeDateInterval的 PHP 文檔,並查看一個工作示例 - https://3v4l.org/ioP1V

你可以這樣做:

請注意,當您使用帶斜杠和破折號的格式(eg 02-02-2012 or 02/02/2012)創建新日期對象時,它必須在mm/dd/yy(yy) or mm-dd-yy(yy)格式(而不是英國格式dd/mm/yy )! 幾個月總是在幾年之前(美國風格),否則你會得到一個不正確的日期,並且可能會得到像上面那樣的錯誤(PHP 在嘗試解碼13th month崩潰)。

<?php


 $acalib_date = '12/13/2018';
 $date = date_create($acalib_date);
 $newdate = date_format($date,'Y/m/d');
 $newDate = date('d/m/Y', strtotime(("$newdate") . " + {$inst_calib_freq_obj->inst_calibration_freq_year} year" . " + {$inst_calib_freq_obj->inst_calibration_freq_month} month"));
 echo $newDate;
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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