PHP:将本地时间转换为UTC

时间:2015-08-21 11:40:46

标签: php datetime utc

假设我得到一个类似08/22/2015 10:56 PM的字符串,并且此日期/时间字符串始终仅指一个特定时区。我需要能够将其转换为这种格式:'Ymd\THis\Z',这是iCal格式。

  1. 如何将该字符串转换为Zulu时间并转换为'Ymd\THis\Z'
  2. 我如何添加,比如30分钟到那个日期/时间?
  3. 试图用strtotime和DateTime破解这个,但我担心我会以错误的方式解决这个问题。也许有一个更简单,更直接的解决方案?

2 个答案:

答案 0 :(得分:8)

您可以使用DateTime,例如:

<?php

$datetime = '08/22/2015 10:56 PM';
$tz_from = 'America/New_York';
$tz_to = 'UTC';
$format = 'Ymd\THis\Z';

$dt = new DateTime($datetime, new DateTimeZone($tz_from));
$dt->setTimeZone(new DateTimeZone($tz_to));
echo $dt->format($format) . "\n";

$minutes = 30;
$dt->add(new DateInterval('PT' . $minutes . 'M'));
echo $dt->format($format) . "\n";

答案 1 :(得分:0)

根据主题行;要将当地时间转换为UTC ,您需要指定当地时间的时区名称,或者您需要GMT中的timezone offset;您可以尝试以下方法:

//assume time zone is +3 hours
$offset = 3 * 60 * 60;
$date = date('H:i:s', strtotime("10:56 PM")- $offset);
echo $date;

这将输出:19:56:00,即UTC时间