2011-06-23 584 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'); 

根據您的需要調整參數,具體取決於您傳遞的參數。

相關問題