Секунды в дату php

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

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

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

Пример 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)
Читайте также  Прекращена работа программы dmcr

Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку. Если в строку формата нужно добавить символы, которые сами по себе являются кодами формата, то перед ними надо поставить обратную косую черту "". Символы, которые становятся кодами формата при добавлении к ним обратной косой, нужно предварять двумя косыми. Например, если необходимо добавить в строку "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 Часовой пояс (имя или сокращение)
%% Символ "%"
Читайте также  Программы безопасности для windows 7

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

Дату иногда очень удобно преобразовывать в количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT). Преобразование производится функцией int strtotime ( string time [, int now]) .

В качестве параметра time можно передавать такие варианты даты как: last Week, last Year, +1 day и т.д.

У меня есть строка, равная дате, представленная в виде количества миллисекунд с начала Unix.

Я пытаюсь вывести его в д-м-у.

Мне дали строку «1227643821310», и мне сказали, что результат должен быть равен 2-12-2008, но я продолжаю получать результат 25-11-2008

Мой код выглядит следующим образом:

Есть идеи, почему это может быть?

Решение

Вы уже делаете это правильно, 1227643821 просто не 02-12-2008, это действительно 25-11-2008.

Другие решения

Я просто добавил H: i: s как в примере ниже:

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

Джефф, важно понимать, когда имеешь дело с метками времени: они представляют время, прошедшее с 0:00:00 01.01.1970. по Гринвичу, не в вашем часовом поясе (если, конечно, вы сами не в Гринвиче).

1227643821 действительно представляет время по Гринвичу 20:10:21 25.11.2008.

Это 25 ноября 2008 года в большинстве стран мира, однако в часовых поясах к востоку от Москвы (и в самом московском часовом поясе летом из-за перехода на летнее время) это уже 26 ноября. Поскольку самый «экстремальный» восточный часовой пояс — GMT + 14, в мире нет места, где отметка времени 1227643821 могла бы представлять дату позже 26-го.

Читайте также  Предел функции двух переменных примеры

Автор оригинального значения мог как-то ошибиться при работе с часовыми поясами. Или просто ошибаюсь. Например, при вычислении значения добавляются секунды, а не миллисекунды на каком-то шаге.

Ссылка на основную публикацию
Adblock
detector