Oc-windows.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Php datetime utc

php конвертировать datetime в UTC

Мне нужен простой способ конвертировать отметку времени даты в UTC (из любого временного интервала, на котором находится сервер) НАДЕЖНО, без использования каких-либо библиотек.

Попробуйте getTimezone и setTimezone , см. Пример

(Но это использует класс)

Без каких-либо классов вы можете попробовать что-то вроде этого:

ПРИМЕЧАНИЕ. Возможно, вам потребуется установить часовой пояс обратно на оригинал

Используйте strtotime для создания метки времени из данной строки (интерпретируемой как локальное время) и используйте gmdate, чтобы получить ее как отформатированную дату UTC.

пример

В соответствии с просьбой, вот простой пример:

получить «СЕЙЧАС» в UTC.

Если у вас есть дата в этом формате YYYY-MM-HH dd: mm: ss, вы можете на самом деле обмануть php, добавив UTC в конце вашей строки «datetime» и используйте strtotime для его преобразования.

Это напечатает следующее:

И, как вы можете видеть, он также заботится о проблеме с летним временем.

Немного странный способ его решить …. 🙂

Поскольку strtotime требует определенного формата ввода, может использоваться DateTime :: createFromFormat ( требуется PHP-версия 5.3+ )

Я когда-нибудь использовал этот метод:

Работает все самое время.

С PHP 5 или выше вы можете использовать функцию datetime :: format (см. Документацию http://us.php.net/manual/en/datetime.format.php )

Преобразование строки локального часового пояса в строку UTC.
например, Часовой пояс Новой Зеландии

  • NZDT: UTC + 13: 00
    if $ datetime = «2016-02-01 00:00:01», $ output = «2016-01-31 11:00:01»;
    if $ datetime = «2016-02-29 23:59:59», $ output = «2016-02-29 10:59:59»;
  • NZST: UTC + 12: 00
    if $ datetime = «2016-05-01 00:00:01», $ output = «2016-04-30 12:00:01»;
    if $ datetime = «2016-05-31 23:59:59», $ output = «2016-05-31 11:59:59»;

Как улучшение ответа Филла Паффорда (я не понял его «Yd-mTG: i: sz», и он предложил вернуть часовой пояс). Поэтому я предлагаю это (я усложнил, изменив формат HMTL в plain / text …):

echo date (‘F d Y’, strtotime (‘2010-01-19 00:00:00’));

вы должны изменить время форматирования, чтобы увидеть другой результат

Функция нормализации общего назначения для форматирования любой временной метки из любого часового пояса в другой. Очень полезно для хранения datetimestamps пользователей из разных часовых поясов в реляционной базе данных. Для сравнения баз данных gmdate(‘Ymd H:i:s’) метку времени как UTC и используйте с gmdate(‘Ymd H:i:s’)

Применение:

В качестве альтернативы вы можете попробовать следующее:

вы можете использовать это внутри атрибута value текстового поля ввода, если вы хотите отображать только дату, доступную только для чтения.

удалите «e», если вы не хотите показывать свой регион / страну.

Php datetime utc

(PHP 4, PHP 5, PHP 7)

date — Форматирует вывод системной даты/времени

Описание

Возвращает строку, отформатированную в соответствии с указанным шаблоном format . Используется метка времени, заданная аргументом timestamp , или текущее системное время, если timestamp не задан. Таким образом, timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time() .

Список параметров

Шаблон результирующей строки ( string ) с датой. См. параметры форматирования ниже. Также существует несколько предопределенных констант даты/времени, которые могут быть использованы вместо этих параметров. Например: DATE_RSS заменяет шаблон ‘D, d M Y H:i:s’.

В параметре format распознаются следующие символы

Символ в строке formatОписаниеПример возвращаемого значения
День
dДень месяца, 2 цифры с ведущим нулёмот 01 до 31
DТекстовое представление дня недели, 3 символаот Mon до Sun
jДень месяца без ведущего нуляот 1 до 31
l (строчная ‘L’)Полное наименование дня неделиот Sunday до Saturday
NПорядковый номер дня недели в соответствии со стандартом ISO-8601 (добавлено в PHP 5.1.0)от 1 (понедельник) до 7 (воскресенье)
SАнглийский суффикс порядкового числительного дня месяца, 2 символаst, nd, rd или th. Применяется совместно с j
wПорядковый номер дня неделиот (воскресенье) до 6 (суббота)
zПорядковый номер дня в году (начиная с 0)От до 365
Неделя
WПорядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельникаНапример: 42 (42-я неделя года)
Месяц
FПолное наименование месяца, например, January или Marchот January до December
mПорядковый номер месяца с ведущим нулёмот 01 до 12
MСокращенное наименование месяца, 3 символаот Jan до Dec
nПорядковый номер месяца без ведущего нуляот 1 до 12
tКоличество дней в указанном месяцеот 28 до 31
Год
LПризнак високосного года1, если год високосный, иначе .
oНомер года в соответствии со стандартом ISO-8601. Имеет то же значение, что и Y, кроме случая, когда номер недели ISO (W) принадлежит предыдущему или следующему году; тогда будет использован год этой недели. (добавлено в PHP 5.1.0)Примеры: 1999 или 2003
YПорядковый номер года, 4 цифрыПримеры: 1999, 2003
yНомер года, 2 цифрыПримеры: 99, 03
Время
aAnte meridiem (лат. «до полудня») или Post meridiem (лат. «после полудня») в нижнем регистреam или pm
AAnte meridiem или Post meridiem в верхнем регистреAM или PM
BВремя в формате Интернет-времени (альтернативной системы отсчета времени суток)от 000 до 999
gЧасы в 12-часовом формате без ведущего нуляот 1 до 12
GЧасы в 24-часовом формате без ведущего нуляот до 23
hЧасы в 12-часовом формате с ведущим нулёмот 01 до 12
HЧасы в 24-часовом формате с ведущим нулёмот 00 до 23
iМинуты с ведущим нулёмот 00 до 59
sСекунды с ведущим нулёмот 00 до 59
uМикросекунды (добавлено в PHP 5.2.2). Учтите, что date() всегда будет возвращать 000000, т.к. она принимает целочисленный параметр, тогда как DateTime::format() поддерживает микросекунды, если DateTime создан с ними.Например: 654321
vМиллисекунды (добавлено в PHP 7.0.0). Замечание такое же как и для u.Пример: 654
Временная зона
eИдентификатор временной зоны (добавлено в PHP 5.1.0)Примеры: UTC, GMT, Atlantic/Azores
I (заглавная i)Признак летнего времени1, если дата соответствует летнему времени, в противном случае.
OРазница с временем по Гринвичу без двоеточия между часами и минутамиНапример: +0200
PРазница с временем по Гринвичу с двоеточием между часами и минутами (добавлено в PHP 5.1.3)Например: +02:00
TАббревиатура временной зоныПримеры: EST, MDT .
ZСмещение временной зоны в секундах. Для временных зон, расположенных западнее UTC возвращаются отрицательные числа, а расположенных восточнее UTC — положительные.от -43200 до 50400
Полная дата/время
cДата в формате стандарта ISO 8601 (добавлено в PHP 5)2004-02-12T15:19:21+00:00
rДата в формате » RFC 2822Например: Thu, 21 Dec 2000 16:01:07 +0200
UКоличество секунд, прошедших с начала Эпохи Unix (1 января 1970 00:00:00 GMT)См. также time()

Любые другие символы, встреченные в строке-шаблоне, будут выведены в результирующую строку без изменений. Z всегда возвращает при использовании gmdate() .

Поскольку рассматриваемая функция принимает в качестве параметра временные метки типа integer , форматирующий символ u будет полезен только при использовании функции date_format() и пользовательских меток времени, созданных с помощью функции date_create() .

Необязательный параметр timestamp представляет собой метку времени типа integer , по умолчанию равную текущему локальному времени, если timestamp не указан. Другими словами, значение по умолчанию равно результату функции time() .

Возвращаемые значения

Возвращает отформатированную строку с датой. При передаче нечислового значения в качестве параметра timestamp будет возвращено FALSE и вызвана ошибка уровня E_WARNING .

Ошибки

Каждый вызов к функциям даты/времени при неправильных настройках временной зоны сгенерирует ошибку уровня E_NOTICE , и/или ошибку уровня E_STRICT или E_WARNING при использовании системных настроек или переменной окружения TZ . Смотрите также date_default_timezone_set()

Список изменений

Теперь ошибки, связанные с временными зонами, генерируют ошибки уровня E_STRICT и E_NOTICE .

Примеры

Пример #1 Примеры использования функции date()

// установка временной зоны по умолчанию. Доступно с PHP 5.1
date_default_timezone_set ( ‘UTC’ );

// выведет примерно следующее: Monday
echo date ( «l» );

// выведет примерно следующее: Monday 8th of August 2005 03:12:46 PM
echo date ( ‘l jS of F Y h:i:s A’ );

// выведет: July 1, 2000 is on a Saturday
echo «July 1, 2000 is on a » . date ( «l» , mktime ( 0 , 0 , 0 , 7 , 1 , 2000 ));

/* пример использования константы в качестве форматирующего параметра */
// выведет примерно следующее: Mon, 15 Aug 2005 15:12:46 UTC
echo date ( DATE_RFC822 );

// выведет примерно следующее: 2000-07-01T00:00:00+00:00
echo date ( DATE_ATOM , mktime ( 0 , 0 , 0 , 7 , 1 , 2000 ));
?>

Чтобы запретить распознавание символа как форматирующего, следует экранировать его с помощью обратного слэша. Если экранированный символ также является форматирующей последовательностью, то следует экранировать его повторно.

Пример #2 Экранирование символов в функции date()

Для вывода прошедших и будущих дат удобно использовать функции date() и mktime() .

Пример #3 Пример совместного использования функций date() и mktime()

Данный способ более надежен, чем простое вычитание и прибавление секунд к метке времени, поскольку позволяет при необходимости гибко осуществить переход на летнее/зимнее время.

Ещё несколько примеров использования функции date() . Важно отметить, что следует экранировать все символы, которые необходимо оставить без изменений. Это справедливо и для тех символов, которые в текущей версии PHP не распознаются как форматирующие, поскольку это может быть введено в следующих версиях. Для экранировании управляющих последовательностей (например, n) следует использовать одинарные кавычки.

Пример #4 Форматирование с использованием date()

// Предположим, что текущей датой является 10 марта 2001, 5:16:18 вечера,
// и мы находимся во временной зоне Mountain Standard Time (MST)

$today = date ( «F j, Y, g:i a» ); // March 10, 2001, 5:16 pm
$today = date ( «m.d.y» ); // 03.10.01
$today = date ( «j, n, Y» ); // 10, 3, 2001
$today = date ( «Ymd» ); // 20010310
$today = date ( ‘h-i-s, j-m-y, it is w Day’ ); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date ( ‘it is the jS day.’ ); // it is the 10th day.
$today = date ( «D M j G:i:s T Y» ); // Sat Mar 10 17:16:18 MST 2001
$today = date ( ‘H:m:s m is month’ ); // 17:03:18 m is month
$today = date ( «H:i:s» ); // 17:16:18
$today = date ( «Y-m-d H:i:s» ); // 2001-03-10 17:16:18 (формат MySQL DATETIME)
?>

Для форматирования дат на других языках используйте вместо date() функции setlocale() и strftime() .

Примечания

Для получения метки времени из строкового представления даты можно воспользоваться функцией strtotime() . Кроме того, некоторые базы данных имеют собственные функции для преобразования внутреннего представления даты в метку времени (например, функция MySQL » UNIX_TIMESTAMP).

Начиная с PHP 5.1, временную метку начала запроса можно получить из поля $_SERVER[‘REQUEST_TIME’] .

Смотрите также

  • gmdate() — Форматирует дату/время по Гринвичу
  • idate() — Преобразует локальное время/дату в целое число
  • getdate() — Возвращает информацию о дате/времени
  • getlastmod() — Получает время последней модификации страницы
  • mktime() — Возвращает метку времени Unix для заданной даты
  • strftime() — Форматирует текущую дату/время с учетом текущих настроек локали
  • time() — Возвращает текущую метку системного времени Unix
  • strtotime() — Преобразует текстовое представление даты на английском языке в метку времени Unix
  • Предопределенные константы даты и времени

Время в PHP, смещение от GMT, UTC

Для начала разберемся что такое GMT и UTC. Во многих источниках они упоминаются как синонимы, и между ними действительно не существенная разница (до 1 секунды).

Их отличие в методике получения точного значения. UTC (универсальное координированное время) измеряется благодаря высокоточным атомным часам. GMT (Время гринвичского или нулевого меридиана) получают благодаря астрономическим расчетам. При этом UTC периодически подгоняют, чтобы расхождение с GMT составляло не более секунды.

Для бытовых целей это расхождение не важно и потому UTC и GMT можно использовать как одно и тоже число.

Время, используемое в PHP

Речь идет о функции time(). Она возвращает так называемый UNIX_TIMESTAMP, время в секундах с 1 Января 1970 года.

Какое время возвращает PHP «по умолчанию»? Для какого часового пояса? Установка по умолчанию часового пояса выполняется в файле php.ini. Например, здесь установлен часовой пояс Лос Анджелеса:

Но если настройки не менялись после установки PHP, то обычно вы там обнаружите UTC, что соответствует часовому поясу GMT:

В программе, вы можете установить нужный вам часовой пояс.

Это можно сделать вот так:

Если используется второй способ, то он устанавливает приоритетное значение часового пояса для функций времени в PHP.

Функция time(), показывает время именно для того часового пояса, который установлен в текущий момент в настройках или date_default_timezone_set().

Как узнать разницу времени между локальным часовым поясом и GMT?

Мы разобрались, что time() показывает время для выбранного часового пояса. Разницу времени локального времени (LT) от GMT и текущий код часового пояса можно получить с помощью ключей функции date(). Рассмотрим следующий пример.

Т.е. ключи выводят

Z — разницу в секундах, при этом пояса западнее GMT дают отрицательные значения, а восточнее — положительные;
e — идентификатор часового пояса (появился в PHP 5.1);
P — разница с GMT в часах и минутах (появился в PHP 5.1.3),
T — аббревиатура часового пояса.

Есть и другие ключи, все они перечислены в документации функции date().

Кстати, через 22 года (19 января 2038) для хранения времени в таком формате уже не будет хватать 32 битного целого числа со знаком. Вполне возможно, что 32 битных приложений уже к тому времени не останется, так что проблемы переполнения не возникнет. 64х-битной переменной уже должно хватить на 292 млрд. лет. Можно уже сейчас проектировать базы данных с учетом этого факта.

Данная запись опубликована в 14.01.2016 19:51 и размещена в PHP. Вы можете перейти в конец страницы и оставить ваш комментарий.

Мало букафф? Читайте есчо !

Восстанавливаем объект из состояния __PHP_Incomplete_ >Декабрь 13, 2014 г.

Объект класса «__PHP_Incomplete_Class» с дополнительным свойством __PHP_Incomplete_Class_Name => ‘имя класса’ появляется, когда PHP не удается найти объявление класса при операции десериализации объекта. К примеру, такое может происходить при хранении .

Как пользоваться flock()?

Если вы решаете задачу конкурентного доступа к файлу (или какому то другому ресурсу) в PHP, и решили использовать flock() для этой цели, то вам понадобится верно представлять как работает механизм блокировки. Представим себе, что есть разные программные .

Php datetime utc

В распределенных системах, таких, как Интернет, время играет особую роль. Из-за незначительного расхождения системных часов игрок на рынке Forex может потерять десятки тысяч долларов в течение нескольких минут; система деловой разведки ошибется в составлении прогноза; серверы NNTP в процессе синхронизации потеряют важную информацию, нужную пользователю и т.д.

PHP содержит множество функций для работы с датой и временем. Наиболее употребимыми являются:

  • time( ) — возвращает текущее абсолютное время. Это число равно количеству секунд, которое прошло с полуночи 1 января 1970 года (с начала эпохи UNIX).
  • getdate( ) — считывает информацию о дате и времени. Возвращает ассоциативный массив, содержащий информацию по заданному или по текущему (по умолчанию) времени. Массив содержит следующие элементы:

ВерсияОписание
5.1.1Для стандартных форматов даты/времени существуют специальные константы, которые могут быть указаны в качестве параметра format .
5.1.0Допустимым диапазоном дат для временных меток обычно являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Они соответствуют минимальному и максимальному значению 32-битного целого числа со знаком). Однако для PHP версии ниже 5.1.0 в некоторых операционных системах (например, Windows) этот диапазон был ограничен датами 01-01-1970 до 19-01-2038.
5.1.0
seconds

Секунды (0-59)
minutes

Минуты (0-59)
hours

Часы (0-23)
mday

День месяца (1-31)
wday

День недели (0-6), начиная с воскресенья
mon

Месяц (1-12)
year

Год
yday

День года (0-365)
weekday

Название дня недели (например, Friday)
month

Название месяца (например, January)
0

Абсолютное время

Пример 1

a

Включено обозначение «am» или «pm»
A

Включено обозначение «AM» или «PM»
d

День месяца (01-31)
D

Сокращенное название дня недели (три буквы)
F

Полное название месяца
g

Часы (12-часовой формат без ведущих нулей)
G

Часы (24-часовой формат без ведущих нулей)
h

Часы (12-часовой формат)
H

Часы (24-часовой формат)
i

Минуты (00-59)
j

День месяца без ведущих нулей (1-31)
l

Полное название дня недели
L

Признак високосного года (0 или 1)
m

Месяц (01-12)
M

Сокращенное название месяца (три буквы)
n

Месяц (1-12)
s

Секунды (00-59)
t

Количество дней в данном месяце (от 28 до 31)
U

Абсолютное время
w

Номер дня недели (0 — воскресенье, 6 — суббота)
y

Год (два разряда)
Y

Год (четыре разряда)
z

День года (0-365)
Z

Смещение часового пояса в секундах (от -43200 до 43200)

Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку. Если в строку формата нужно добавить символы, которые сами по себе являются кодами формата, то перед ними надо поставить обратную косую черту «». Символы, которые становятся кодами формата при добавлении к ним обратной косой, нужно предварять двумя косыми. Например, если необходимо добавить в строку «n», то надо ввести «\n», поскольку «n» является символом новой строки.

Пример 2

mktime( ) — возвращает абсолютное время, которое затем можно использовать с функциями date() или getdate(). Принимает до шести целочисленных аргументов в следующем порядке:

часы
минуты
секунды
месяц
день месяца
год

Пример 3

Внимание! Дата может находиться в допустимом диапазоне, но остальные функции работы с датами не примут это значение. Так, нельзя использовать mktime() для годов до 1902, а также следует использовать ее осторожно для годов до 1970.

strftime( ) — формирование локальной даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. При этом названия месяцев и дней недели извлекается из локали, выбранной с помощью функции setlocate( ) Строка формата может содержать следующие коды:

%a

Сокращенное название дня недели
%A

Полное название дня недели
%b

Сокращенное название месяца
%B

Полное название месяца
%c

Предпочтительный формат даты и времени
%C

Номер века
%d

День месяца (1-31)
%D

То же, что и %m/%d/%y
%e

Месяц (1-12)
%h

То же, что и %b
%H

Часы (24-часовой формат)
%I

Часы (12-часовой формат)
%j

День года (0-365)
%m

Месяц (1-12)
%M

Минуты
%n

Символ новой строки
%p

Включено обозначение «am» или «pm»
%r

Время с использованием a.m./p.m.-нотации
%R

Время в 24-часовом формате
%S

Секунды (00-59)
%t

Символ табуляции
%T

То же, что и %H:%M:%S
%u

Номер дня недели (1 — понедельник, 7 — воскресенье)
%U

Номер недели. Отсчет начинается с первого воскресенья года
%V

Номер недели по ISO 8601:1988. Первая неделя должна иметь не менее четырех дней, а понедельник считается первым днем
%W

Номер недели. Отсчет начинается с первого понедельника года
%w

Номер дня недели (0 — воскресенье, 6 — суббота)
%x

Предпочтительный формат даты без времени
%X

Предпочтительный формат времени без даты
%y

Год (два разряда)
%Y

Год (четыре разряда)
%Z

Часовой пояс (имя или сокращение)
%%

Символ «%»

Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку.

Читать еще:  Db connect php
Ссылка на основную публикацию
Adblock
detector