Как уже говорилось много раз - с Проверьте этот список все селектор CSS. div ~ p
выбраны все элементы , которым предшествует элемент
$date = new DateTime($dateStr, new DateTimeZone($timezone));
$timestamp = $date->format('U');
Это будет работать, если по какой-то причине вы используете & lt; 5.2 (Heaven forbid).
$reset = date_default_timezone_get();
date_default_timezone_set('America/New_York');
$stamp = strtotime($dateStr);
date_default_timezone_set($reset);
Но что-нибудь 5.2 и выше, я настоятельно рекомендую вам выбрать ответ @ salathe.
strtotime()
всегда будет давать seconds since epoch
для UTC
. Таким образом, используйте класс DateTime
, как уже рекомендовано в этом ответе
– Fr0zenFyr
15 March 2018 в 11:22
Всякий раз, когда вы обращаетесь к точному моменту времени, сохраняйте время в соответствии с единым стандартом, на который не влияет дневная экономия. (GMT и UTC эквивалентны в этом отношении, но предпочтительно использовать термин UTC. Обратите внимание, что UTC также известен как Zulu или Z time.)
Если вместо этого вы решили сохранить время, используя локальное значение времени, включают местное смещение по времени от UTC, так что временная метка может быть позже интерпретирована однозначно.
В некоторых случаях вам может потребоваться сохранить время UTC и эквивалентное местное время. Часто это делается с двумя отдельными полями, но некоторые платформы поддерживают тип datetimeoffset, который может хранить оба в одном поле.
При сохранении временных меток в качестве числового значения используйте время Unix - это число целого секунд с 1970-01-01T00: 00: 00Z (исключая секунды прыжка). Если вам требуется более высокая точность, вместо этого используйте миллисекунды. Это значение всегда должно основываться на UTC без какой-либо регулировки часового пояса.
Если позже вам понадобится изменить временную метку, укажите исходный идентификатор часового пояса, чтобы вы могли определить, может ли смещение измениться с оригинальное значение записано.
При планировании будущих событий обычно предпочитается местное время вместо UTC, так как обычно это смещение изменяется. См. Ответ и сообщение в блоге.
Помните, что смещения часовых поясов не всегда являются целым числом часов (например, индийское стандартное время - UTC + 05: 30, а Непал использует UTC + 05: 45) .
Если вы используете Java, используйте java.time для Java 8 или используйте Joda Time для Java 7 или ниже. Если вы используете .NET, подумайте об использовании Noda Time. Если вы используете .NET без времени Noda, считайте, что DateTimeOffset часто является лучшим выбором, чем DateTime. Если вы используете Perl, используйте DateTime. Если вы используете Python, используйте pytz или dateutil. Если вы используете JavaScript, используйте moment.js с расширением момента времени. Если вы используете PHP> 5.2, используйте преобразования собственных часовых поясов, предоставляемые классами DateTime и DateTimeZone. Будьте осторожны при использовании.
DateTimeZone :: listAbbreviations () - см. Ответ. Чтобы поддерживать PHP в актуальных данных Olson, периодически устанавливайте пакет PECL timezonedb; см. ответ.
Если вы используете C ++, обязательно используйте библиотеку, которая использует правильно реализует базу данных часовых поясов IANA. К ним относятся cctz, ICU и библиотека «tz» Говарда Хиннанта.
Не используйте Boost для преобразования часовых поясов. Хотя его API утверждает, что поддерживает стандартные идентификаторы IANA (aka «zoneinfo»), он грубо сопоставляет их с фиксированными смещениями, не учитывая богатую историю изменений, которые каждая зона могла иметь.
(Кроме того, файл выпал из обслуживания.)
Большинство бизнес-правил используют гражданское время, а не UTC или GMT. Поэтому планируйте преобразовать метки времени UTC в локальный часовой пояс перед применением прикладной логики.
Помните, что временные зоны и смещения не являются фиксированными и могут меняться. Например, исторически США и Великобритания использовали те же даты, что и «весна вперед» и «отступать».
Однако в 2007 году США изменили даты, в которые часы меняются. Это означает, что в течение 48 недель в году разница между лондонским временем и временем в Нью-Йорке составляет 5 часов и 4 недели (3 весной, 1 осенью) - 4 часа. Помните о таких элементах в любых вычислениях, которые включают несколько зон.
Рассмотрим тип времени (фактическое время события, время трансляции, относительное время, историческое время, повторяющееся время), какие элементы (временная метка, часовой пояс смещение и имя часового пояса), необходимо сохранить для правильного поиска - см. «Типы времени» в ответ.
Хранить файлы синхронизации ОС, базы данных и приложений в синхронизации, между собой и остальным миром .
На серверах установите аппаратные часы и часы ОС в UTC, а не в локальный часовой пояс.
Независимо от предыдущей точки маркера серверный код, включая веб-сайты, должен никогда не ожидайте, что местный часовой пояс сервера будет чем-то конкретным. см. ответ.
Использовать службы NTP на всех серверах.
Если вы используете FAT32, помните, что временные метки сохраняются в локальное время, а не UTC.
При работе с повторяющиеся события (например, еженедельное ТВ-шоу), помните, что время изменяется с помощью DST и будет отличаться по часовым поясам.
Всегда запрашивать значения даты-времени как включенные в нижнюю границу, эксклюзивные ограничения сверху ( > =, & lt;).
Принятый ответ велик, если вы используете PHP> 5.2 (я думаю, что это версия, в которую они добавили класс DateTime). Если вы хотите поддерживать более старую версию, вы не хотите вводить столько, или если вы просто предпочитаете функциональный подход, существует другой способ, который также не изменяет глобальные настройки:
$dateStr = '2008-09-11 00:00:00';
$timezone = 'America/New_York';
$dtUtcDate = strtotime($dateStr. ' '. $timezone);
Если вы собираетесь использовать Timezones, я предлагаю вам использовать класс DateTime, и в этом случае функция DateTime :: createFromFormat (), которая позволит вам делать такие сеансы:
$start = "2015-01-14 11:59:43";
$timezone = "America/Montreal";
$tz = new DateTimeZone($timezone);
$dt = DateTime::createFromFormat('Y-m-d H:i:s', $start, $tz);
Когда вы помещаете $ tz в функцию DateTime :: createFromFormat, вы указываете, в каком часовом поясе дана дата, так что, когда вам нужно преобразовать ее в другой часовой пояс, все, что вам нужно сделать, это что-то вроде этого:
$start = $dt->setTimeZone(new DateTimeZone('UTC'));
$d = new DateTime($dateStr, $timezonefrom); $d->setTimezone($timezoneto);
. – Artefacto 25 August 2010 в 19:51