2011-06-23 18 views
0

私が知っている日付と私が知っている時間からISO 8601 datetimeの作成を処理する最良の方法を見つけることを試みています。私はこれらのdatetimesを作成するときとデータベースに格納するときにUTC時間を扱っています。私は時間を追加したいという日付(2011-06-24)を持っています。フォームには開始時刻と終了時刻のテキスト入力があります。このフォームが提出されると、私は知っている日付(2011-06-24)と私が知っている時間(午前10時と午前11時30分)をとり、開始時に保存される日時を作成したいそして終わりの時。日付と時刻からISO 8601 datetimeを作成する

は、私はPHPのDateTimeクラスでの作業にかなりの新たなんだ、これは私が思い付いたものです:

$day = "2011-06-24"; 
$start = "10:00 AM"; 
$end = "11:30 AM"; 

$date = new DateTime(); 
$date->setTimestamp(strtotime($start)); 
$date->setDate(date('Y', strtotime($day)), date('m', strtotime($day)), date('d', strtotime($day))); 

// same for $end... 

がこれを行うには良い方法はありますか?

答えて

3

<?php 

    $day = "2011-06-24"; 
    $start = "10:00 AM"; 
    $end = "11:00 AM"; 

    $startdate = DateTime::createFromFormat('Y-m-d g:i A', $day.' '.$start, new DateTimeZone('UTC')); 
    $enddate = DateTime::createFromFormat('Y-m-d g:i A', $day.' '.$end, new DateTimeZone('UTC')); 
    //date('c') generates ISO 8601 formatted date 
    echo 'From ', $startdate->format('c'), ' to ', $enddate->format('c'), '.'; 

EDIT:追加のタイムゾーン。

1
$date = DateTime::createFromFormat('Y-m-d', '2011-06-24'); 

渡す引数に応じて、必要に応じて引数を調整します。これについて(DateTime documentationを参照してください)どのよう

関連する問題