2014-11-05 39 views
0

我想創建集成電路開始和結束時間(UTC)與格式,如:如何從時區,PHP的字符串日期獲取時間戳?

DTSTART:20141107T110000Z 
DTEND:20141107T120000Z 

我有以下對象作爲輸入:

"event": { 
    "timezone": "GMT+2", 
    "start_time": "2014-11-07 13:00:00", // client local time 
    "duration": 30 
    }, 

function _calc_end_date($start, $duration) { 
    $start_date = new DateTime($start, new DateTimeZone('UTC')); 
    $end_date = $start_date->add(new DateInterval('PT'.$duration.'M')); 
    $end_date_str = $end_date->format('Y-m-d H:i:s'); 
    return $end_date_str; 
} 

private function dateToCal($timestamp) { 
    return GMDATE("Ymd\THis\Z", $timestamp); 
} 

$timezone = $event['timezone']; // ????  
$start = strtotime($event['start_time'] . " UTC"); 
$end_date = $this->_calc_end_date($event['start_time'], $event['duration']); 
$end = strtotime($end_date . " UTC"); 

所以我寫:

"DTSTART:" . $this->dateToCal($start) . $eol . 
"DTEND:" . $this->dateToCal($end) . $eol . 

這段代碼有效,但是我得到了2小時不同的結果。正如你可以注意到我沒有進入TimeZone,因爲我不知道如何。

$timezone = $event['timezone']; // 

不知怎的,我需要解析 「GMT + 2」,並計算

$start = strtotime($event['start_time'] . " UTC"); 

與TZ。

請幫幫忙,

+0

如果您使用UTC爲什麼你需要一個時區? UTC在全世界都是一樣的 – mgrenier 2014-11-05 20:47:57

+0

客戶端iOS發送當地時間+他的TZ讓我正確計算UTC。 – snaggs 2014-11-05 20:48:38

+0

所以你有UTC,你想計算當地時間? – mgrenier 2014-11-05 20:50:24

回答

1
$date = DateTime::createFromFormat("Y-m-d H:i:s O", $event['start_time'] . ' ' . $event['timezone']); 
$date->setTimezone(new DateTimeZone('GMT')); 
$startDate = $date->format("Ymd\THis\Z"); 

$date->add(new DateInterval('PT' . $event['duration'] . 'M')); 
$endDate = $date->format("Ymd\THis\Z"); 
0

使用串並的indexOf的「+」後搶的一切,並添加數個小時的時間

0

什麼是源區名稱?此代碼的工作對我來說:

date_default_timezone_set('UTC'); 
echo date('Y-m-d H:i', strtotime("2014-11-07 13:00:00 Europe/Warsaw")); 
相關問題