我試圖從數組中創建一個日期。有沒有什麼功能可以實現這個功能?我知道的是我可以訪問字段並從中創建日期。從php數組中創建一個新日期
'endDate' => array(
'month' => '05',
'day' => '30',
'year' => '2017',
'hour' => '10',
'min' => '48',
'meridian' => 'pm'
)
我試圖從數組中創建一個日期。有沒有什麼功能可以實現這個功能?我知道的是我可以訪問字段並從中創建日期。從php數組中創建一個新日期
'endDate' => array(
'month' => '05',
'day' => '30',
'year' => '2017',
'hour' => '10',
'min' => '48',
'meridian' => 'pm'
)
我用DateTime::createFromFormat
和vsprintf
構建從陣列時間字符串,以及與此想出了:
<?php
$endDate = array(
'month' => '05',
'day' => '30',
'year' => '2017',
'hour' => '10',
'min' => '48',
'meridian' => 'pm'
);
$date = DateTime::createFromFormat('d/m/Y h:i a', vsprintf('%s/%s/%s %s:%s %s', [
$endDate['day'],
$endDate['month'],
$endDate['year'],
$endDate['hour'],
$endDate['min'],
$endDate['meridian'],
]));
echo $date->format('d/m/Y h:i a');
輸出(你可以調整格式:
30/05/2017 10:48 pm
其實你可能甚至不需要使用DateTime
,但我會建議你儘可能做,然後進一步操縱它(增加時間間隔或改變fo RMAT),你很可能只是做:
printf('%s/%s/%s %s:%s %s', [
$endDate['day'],
$endDate['month'],
$endDate['year'],
$endDate['hour'],
$endDate['min'],
$endDate['meridian'],
]
有什麼方法可以轉換結果以毫秒爲單位。結果:''18/04/2017 04:48 pm'' – kamboj
你可以組裝你的價值到價值日期字符串,然後創建的電話strtotime
的DateTime
一個新的實例。
$endtime = [
'month' => '05',
'day' => '30',
'year' => '2017',
'hour' => '10',
'min' => '48',
'meridian' => 'pm'
];
$datetime = DateTime::createFromFormat("Y-m-d h:i A", "{$endtime['year']}-{$endtime['month']}-{$endtime['day']} {$endtime['hour']}:{$endtime['min']} {$endtime['meridian']}");
$time = strtotime("{$endtime['year']}-{$endtime['month']}-{$endtime['day']} {$endtime['hour']}:{$endtime['min']} {$endtime['meridian']}");
沒有API函數可以實現這個功能。你可以實現你自己的方法,其中,應該是這樣的:
/**
* Convert given array to DateTimeObject
* @param $dateArr array containing 'day', 'month', 'year', 'hour', 'min', 'meridian'
* @return DateTime object
*
* 'day' and 'month' must always be 2 numbers
* 'year' must always be 4 numbers
* 'hour' must always be 2 numbers (01-12)
* 'min' must always be 2 numbers (00-59)
* 'meridian' must always be 2 letters ('am' or 'pm')
*/
function createEndDate($dateArr) {
return DateTime::createFromFormat('dmYhia',
$dateArr['day'] .
$dateArr['month'] .
$dateArr['year'] .
$dateArr['hour'] .
$dateArr['min'] .
strtolower($dateArr['meridian']));
}
代碼示例:
$yourArr => array(
'month' => '05',
'day' => '30',
'year' => '2017',
'hour' => '10',
'min' => '48',
'meridian' => 'pm'
)
$endDate = createEndDate($yourArr);
// see http://php.net/manual/de/class.datetime.php for docs
echo $endDate->format('u');
您正在尋找這樣的事情http://stackoverflow.com/questions/11322777/how-將日期數組轉換爲日期數組 - 那是從日期 - 分析 - 返回 - 日期 - 我想? – cpap
http://php.net/manual/en/function.mktime.php – AbraCadaver
即使這可能會竅門 http://php.net/manual/en/datetime.createfromformat.php –