Как я получаю Среднее время по Гринвичу в PHP?

Если не считать ошибки в проводке, массив fontArray явно не инициализирует все значения. Таким образом, компилятор даст этим неинициализированным значениям (в глобальном массиве) значение по умолчанию, равное 0.

Результат - звонки на digitalWrite(0, HIGH). В зависимости от конфигурации платы и выводов, вывод «0» может отображаться на 13.

Цикл for может быть записан для защиты от этого с помощью:

for (int i = 0; i < nPins; i++) {
  int pin = fontArray[a][i];
  if (pin == 0) {
    break;
  }
  digitalWrite(pin, HIGH);
}
45
задан TRiG 18 February 2014 в 17:45
поделиться

2 ответа

Независимо от того, в каком часовом поясе GMT сервер, вот чрезвычайно простой способ получить время и дату для любого часового пояса. Это делается с помощью функций time () и gmdate () . Функция gmdate () обычно дает нам время по Гринвичу, но, проделав трюк с функцией time () , мы можем получить GMT + N или GMT-N, то есть мы можем получить время для любого часового пояса GMT.

Например, если вам нужно получить время для GMT + 5, вы можете сделать это следующим образом

<?php 
  $offset=5*60*60; //converting 5 hours to seconds.
  $dateFormat="d-m-Y H:i";
  $timeNdate=gmdate($dateFormat, time()+$offset);
?>

Теперь, если вам нужно получить время для GMT-5, вы можете просто вычтите смещение из time () вместо добавления к нему, как в следующем примере, где мы получаем время для GMT-4

<?php 
  $offset=4*60*60; //converting 4 hours to seconds.
  $dateFormat="d-m-Y H:i"; //set the date format
  $timeNdate=gmdate($dateFormat, time()-$offset); //get GMT date - 4
?>
48
ответ дан 26 November 2019 в 20:56
поделиться

Я бы настоятельно рекомендовал не возиться с временными метками UNIX, чтобы он выглядел как другой часовой пояс. Это урок, который я усвоил на горьком опыте, слишком много раз.

Временная метка - это количество секунд, прошедших с полуночи 1 января 1970 года по Гринвичу. Неважно, где вы находитесь в мире, данная метка времени представляет собой один и тот же момент времени, независимо от часовых поясов. Да, отметка времени «0» означает 10 часов утра 1 января 1970 года в Австралии, полночь 1 января 1970 года в Лондоне и 5 часов вечера 31 декабря 1969 года в Лос-Анджелесе, но это не так. Это означает, что вы можете просто складывать или вычитать значения и гарантировать точность.

Золотым примером, который слишком долго наполнял меня каждый год, был случай перехода на летнее время. Переход на летнее время означает, что существуют «часы», которых нет в определенных частях мира. Например, в большинстве частей США 2 апреля 2006 г. не было такого времени, как 2:01 ночи.

Однако достаточно квазиинтеллектуальной разглагольствования. Я советую хранить ваши даты в базе данных как метки времени, а затем ...

  • Если вам нужно местное время на сервере, используйте date ()
  • Если вам нужно получить GMT, используйте gmdate ()
  • Если вам нужен другой часовой пояс, используйте date_default_timezone_set () , а затем date ()

Например,

$timestamp = time();

echo "BRISBANE: " . date('r', $timestamp) . "\n";
echo "     UTC: " . gmdate('r', $timestamp) . "\n";
date_default_timezone_set('Africa/Johannesburg');
echo "  JOBURG: " . date('r', $timestamp) . "\n";

// BRISBANE: Tue, 12 May 2009 18:28:20 +1000
//      UTC: Tue, 12 May 2009 08:28:20 +0000
//   JOBURG: Tue, 12 May 2009 10:28:20 +0200

Это сохранит ваши значения чистый (вам не нужно беспокоиться о добавлении смещений,

70
ответ дан 26 November 2019 в 20:56
поделиться
Другие вопросы по тегам:

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