Предположим, я получаю строку, как 08/22/2015 10:56 PM
и что эта строка даты / времени всегда относится только к одному конкретному часовому поясу. Мне нужно иметь возможность преобразовать это в этот формат: 'Ymd\THis\Z'
, который является форматом iCal.
'Ymd\THis\Z'
Я пытался взломать это с помощью strtotime и DateTime, но я беспокоюсь, что поступлю неправильно. Может быть, есть более простое и понятное решение?
Ты можешь использовать 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";
согласно теме письма; Преобразовать местное время до 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