2011-06-23 365 views
0

我想从我知道的日期和知道的时间中找到处理创建ISO 8601日期时间的最佳方法。在创建这些日期时间以及将它们存储在数据库中时,我正在处理UTC时间。我有一个日期(2011-06-24),我想添加时间,在窗体上我有一个开始和结束时间的文本输入。提交此表单后,我想记下我知道的日期(2011-06-24)以及我知道的时间(上午10:00和上午11:30),并创建一个将在开始时存储的日期时间和结束时间。从日期和时间创建ISO 8601日期时间

我是很新,与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

这个怎么样(见DateTime documentation):

<?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'), '.'; 

编辑:加入时区。

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

根据您的需要调整参数,具体取决于您传递的参数。

相关问题