Как изменить часовой пояс в метке времени [дубликат]

Поскольку изображение не находится в отдельной части тела, PreencodedMimeBodyPart не поможет вам.

Как вы кодируете изображение base64?

Альтернативой является использование multipart / related message, с изображением в отдельной части, с ссылкой на URL-адрес cid:

40
задан Mike 26 March 2013 в 00:26
поделиться

3 ответа

Что вы ищете:

$triggerOn = '04/01/2013 03:08 PM';
$user_tz = 'America/Los_Angeles';

echo $triggerOn; // echoes 04/01/2013 03:08 PM

$schedule_date = new DateTime($triggerOn, new DateTimeZone($user_tz) );
$schedule_date->setTimeZone(new DateTimeZone('UTC'));
$triggerOn =  $schedule_date->format('Y-m-d H:i:s');

echo $triggerOn; // echoes 2013-04-01 22:08:00
83
ответ дан Mike 22 August 2018 в 07:59
поделиться
  • 1
    Большое вам спасибо, это именно то, что я искал. Спасибо вам :) – Jaylen 26 March 2013 в 00:36
  • 2
    просто fyi для читателей: setTimeZone изменяет строку часового пояса объекта, а также значение datetime. формат - это то, что используется для получения строки. Это не похоже на setTimeZone, только изменяет свойство часового пояса, а затем форматирует только его количество - фактическое числовое значение времени, которое было затронуто при выполнении setTimeZone. – ahnbizcad 4 April 2017 в 00:47
  • 3
    @ahnbizcad 04/01/2013 03:08 PM в Лос-Анджелесе точно в то же время, что и 2013-04-01 22:08:00 в UTC. Само время не меняется, а только часовой пояс. – Mike 4 April 2017 в 01:55
  • 4
    Я говорю о том, что в отличие от 12:00 востока меняют на 12: 00. Установка часового пояса с этой функцией не делает этого. Я разъяснял путаницу потенциального парадигмы. – ahnbizcad 14 July 2017 в 22:50
  • 5
    @ahnbizcad Ваш предыдущий комментарий очень запутан, и я бы даже сказал, что это неправильно. В PHP информация о дате / времени хранится внутри UTC, поэтому при изменении часового пояса значение даты / времени не изменяется, происходит только смещение UTC. Я думаю, что из комментариев кода в ответе вполне очевидно, что при изменении временного пояса объекта DateTime это меняет местное время. – Mike 15 July 2017 в 00:10

Вы потребляете дату / время и правильно устанавливаете часовой пояс, однако перед форматированием даты и времени вы не устанавливаете желаемый часовой пояс. Вот пример, который принимает часовой пояс UTC и преобразует дату / время в часовой пояс America / Los_Angeles:

<?php
$original_datetime = '04/01/2013 03:08 PM';
$original_timezone = new DateTimeZone('UTC');

// Instantiate the DateTime object, setting it's date, time and time zone.
$datetime = new DateTime($original_datetime, $original_timezone);

// Set the DateTime object's time zone to convert the time appropriately.
$target_timezone = new DateTimeZone('America/Los_Angeles');
$datetime->setTimeZone($target_timezone);

// Outputs a date/time string based on the time zone you've set on the object.
$triggerOn = $datetime->format('Y-m-d H:i:s');

// Print the date/time string.
print $triggerOn; // 2013-04-01 08:08:00
13
ответ дан Joshua Burns 22 August 2018 в 07:59
поделиться
  • 1
    Спасибо за этот пример, поскольку он объясняет решение еще больше :) – Jaylen 26 March 2013 в 00:54

Создайте дату, используя локальный часовой пояс, затем вызовите DateTime::setTimeZone(), чтобы изменить его.

2
ответ дан Martin 22 August 2018 в 07:59
поделиться
  • 1
    Как я могу изменить useretTimezone: $ triggerOn создается по местному времени, и я хочу преобразовать его в UTC. – Jaylen 26 March 2013 в 00:21
  • 2
    Не уверен, почему нисходящий сигнал, учитывая ответ, обозначенный как правильный, делает именно это. Я признаю, что у него не было деталей, это довольно простой вопрос. – Jerry 26 March 2013 в 01:01
Другие вопросы по тегам:

Похожие вопросы: