datetime — PHP: конвертировать местное время в UTC

Предположим, я получаю строку, как 08/22/2015 10:56 PM и что эта строка даты / времени всегда относится только к одному конкретному часовому поясу. Мне нужно иметь возможность преобразовать это в этот формат: 'Ymd\THis\Z', который является форматом iCal.

  1. Как мне преобразовать эту строку в зулусское время и в 'Ymd\THis\Z'
  2. Как мне добавить, скажем, 30 минут к этой дате / времени?

Я пытался взломать это с помощью strtotime и DateTime, но я беспокоюсь, что поступлю неправильно. Может быть, есть более простое и понятное решение?

2

Решение

Ты можешь использовать 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";
6

Другие решения

согласно теме письма; Преобразовать местное время до UTC вам нужно название часового пояса данного местного времени, или если у вас есть 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

0

По вопросам рекламы [email protected]