2017-04-18 17 views
0

配列から日付を作成しようとしています。これを達成できる機能はありますか?私が知っているのは、フィールドにアクセスして日付を作成できることです。PHPの配列から新しい日付を作成する

'endDate' => array(
     'month' => '05', 
     'day' => '30', 
     'year' => '2017', 
     'hour' => '10', 
     'min' => '48', 
     'meridian' => 'pm' 
    ) 
+0

あなたはこのような何かを探していますhttp://stackoverflow.com/questions/11322777/how-私は思っていた日付に変換されて元の配列に変換されました。 – cpap

+0

http://php.net/manual/en/function.mktime.php – AbraCadaver

+1

でもこれはトリックを行う可能性があります http://php.net/manual/en/datetime.createfromformat.php –

答えて

1

私は配列から時刻文字列を構築するためにDateTime::createFromFormatvsprintfを使用し、この思い付いた:

<?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を使用する必要はありませんが、私はあなたがそれをさらに操作できるようにすることをお勧めします(時間間隔を追加するか、 RMAT)、あなたはおそらく何ができる:

printf('%s/%s/%s %s:%s %s', [ 
    $endDate['day'], 
    $endDate['month'], 
    $endDate['year'], 
    $endDate['hour'], 
    $endDate['min'], 
    $endDate['meridian'], 
] 

デモ:https://eval.in/778600

+0

変換する方法はありますか結果はミリ秒です。結果: '' 18/04/2017 04:48 pm'' – kamboj

0

をあなたはその後、コールstrtotimeDateTimeの新しいインスタンスを作成する値の日付文字列にあなたの価値を組み立てることができます。

$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']}"); 
0

これを実現する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'); 
関連する問題