Описание string date ( string format [, int timestamp] )
Замечание: Для большинства систем допустимыми являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Эти даты соответствуют минимальному и максимальному значению 32-битового целого со знаком). Для Windows допустимы даты с 01-01-1970 по 19-01-2038.
Таблица 1. В параметре format распознаются следующие символы
Пример 1. Примеры использования функции date()
// вывод дня недели, например Wednesday echo date ( «l» );
// вывод даты в формате: Wednesday 15th of January 2003 05:51:38 AM echo date ( «l dS of F Y h:i:s A» );
Пример 2. Экранирование символов в функции date()
// вывод: Wednesday the 15th echo date ( «l \\t\h\e jS» ); ?>
Пример 4. Форматирование с использованием date()
// Предположим, что текущая дата March 10th, 2001, 5:16:18 pm
$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 z ‘ ); // 05-16-17, 10-03-01, 1631 1618 6 Fripm01 $today = date ( ‘\i\t \i\s \t\h\e jS \d\a\y.’ ); // It is the 10th day. $today = date ( «D M j G:i:s T Y» ); // Sat Mar 10 15:16:08 MST 2001 $today = date ( ‘H:m:s \m \i\s\ \m\o\n\t\h’ ); // 17:03:17 m is month $today = date ( «H:i:s» ); // 17:16:17 ?>
// установка часового пояса по умолчанию. 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’ );
/* пример использования константы в качестве форматирующего параметра */ // выведет примерно следующее: Mon, 15 Aug 2005 15:12:46 UTC echo date ( DATE_RFC822 );
Чтобы запретить распознавание символа как форматирующего, следует экранировать его с помощью обратного слеша. Если экранированный символ также является форматирующей последовательностью, то следует экранировать его повторно.
Пример #2 Экранирование символов в функции date()
Пример #3 Пример совместного использования функций date() и mktime()
Данный способ более надёжен, чем простое вычитание и прибавление секунд к метке времени, поскольку позволяет при необходимости гибко осуществить переход на летнее/зимнее время.
Пример #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 ( ‘\i\t \i\s \t\h\e jS \d\a\y.’ ); // 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 \i\s\ \m\o\n\t\h’ ); // 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) ?>
Примечания
Смотрите также
User Contributed Notes 20 notes
Things to be aware of when using week numbers with years.
Conclusion: if using ‘W’ for the week number use ‘o’ for the year.
In order to define leap year you must considre not only that year can be divide by 4!
The correct alghoritm is:
if (year is not divisible by 4) then (it is a common year) else if (year is not divisible by 100) then (it is a leap year) else if (year is not divisible by 400) then (it is a common year) else (it is a leap year)
FYI: there’s a list of constants with predefined formats on the DateTime object, for example instead of outputting ISO 8601 dates with:
echo date ( ‘Y-m-d\TH:i:sO’ ); ?>
You can use
echo date ( DateTime :: ISO8601 ); ?>
instead, which is much easier to read.
this how you make an HTML5 tag correctly
It’s common for us to overthink the complexity of date/time calculations and underthink the power and flexibility of PHP’s built-in functions. Consider http://php.net/manual/en/function.date.php#108613
date() will format a time-zone agnostic timestamp according to the default timezone set with date_default_timezone_set(. ). Local time. If you want to output as UTC time use:
For HTML5 datetime-local HTML input controls (http://www.w3.org/TR/html-markup/input.datetime-local.html) use format example: 1996-12-19T16:39:57
To generate this, escape the ‘T’, as shown below:
If timestamp is a string, date converts it to an integer in a possibly unexpected way:
The example below formats today’s date in three different ways:
The following function will return the date (on the Gregorian calendar) for Orthodox Easter (Pascha). Note that incorrect results will be returned for years less than 1601 or greater than 2399. This is because the Julian calendar (from which the Easter date is calculated) deviates from the Gregorian by one day for each century-year that is NOT a leap-year, i.e. the century is divisible by 4 but not by 10. (In the old Julian reckoning, EVERY 4th year was a leap-year.)
This algorithm was first proposed by the mathematician/physicist Gauss. Its complexity derives from the fact that the calculation is based on a combination of solar and lunar calendars.
At least in PHP 5.5.38 date(‘j.n.Y’, 2222222222) gives a result of 2.6.2040.
So date is not longer limited to the minimum and maximum values for a 32-bit signed integer as timestamp.
Prior to PHP 5.6.23, Relative Formats for the start of the week aligned with PHP’s (0=Sunday,6=Saturday). Since 5.6.23, Relative Formats for the start of the week align with ISO-8601 (1=Monday,7=Sunday). (http://php.net/manual/en/datetime.formats.relative.php)
This can produce different, and seemingly incorrect, results depending on your PHP version and your choice of ‘w’ or ‘N’ for the Numeric representation of the day of the week:
Prior to PHP 5.6.23, this results in:
Today is Sun 2 Oct 2016, day 0 of this week. Day 1 of next week is 10 Oct 2016 Today is Sun 2 Oct 2016, day 7 of this week. Day 1 of next week is 10 Oct 2016
Since PHP 5.6.23, this results in:
Today is Sun 2 Oct 2016, day 0 of this week. Day 1 of next week is 03 Oct 2016 Today is Sun 2 Oct 2016, day 7 of this week. Day 1 of next week is 03 Oct 2016
I’ve tested it pretty strenuously but date arithmetic is complicated and there’s always the possibility I missed something, so please feel free to check my math.
The function could certainly be made much more powerful, to allow you to set different days to be ignored (e.g. «skip all Fridays and Saturdays but include Sundays») or to set up dates that should always be skipped (e.g. «skip July 4th in any year, skip the first Monday in September in any year»). But that’s a project for another time.
$start = strtotime ( «1 January 2010» ); $end = strtotime ( «13 December 2010» );
// Add as many holidays as desired. $holidays = array(); $holidays [] = «4 July 2010» ; // Falls on a Sunday; doesn’t affect count $holidays [] = «6 September 2010» ; // Falls on a Monday; reduces count by one
?>
Or, if you just want to know how many work days there are in any given year, here’s a quick function for that one:
Шаблон результирующей строки ( string ) с датой. См. параметры форматирования ниже. Также существует несколько предопределенных констант даты/времени, которые могут быть использованы вместо этих параметров. Например: DATE_RSS заменяет шаблон ‘D, d M Y H:i:s’.
Возвращаемые значения
Ошибки
Список изменений
Версия
Описание
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
Примеры
Пример #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’ );
Чтобы запретить распознавание символа как форматирующего, следует экранировать его с помощью обратного слеша. Если экранированный символ также является форматирующей последовательностью, то следует экранировать его повторно.
Пример #2 Экранирование символов в функции date()
Пример #3 Пример совместного использования функций date() и mktime()
Данный способ более надежен, чем простое вычитание и прибавление секунд к метке времени, поскольку позволяет при необходимости гибко осуществить переход на летнее/зимнее время.
Пример #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 ( ‘\i\t \i\s \t\h\e jS \d\a\y.’ ); // 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 \i\s\ \m\o\n\t\h’ ); // 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) ?>
I have a PHP script that outputs an array of data. This is then transformed into JSON using the json_encode() function.
My issue is I have a date within my array and it’s not in the correct JavaScript format. How can I convert this within PHP so it is?
Instead of the above for the date I need the equivalent of the JavaScript function
When I output the above I get the following «Fri Jun 01 2012 11:08:48 GMT+0100 (GMT Daylight Time)» However, If I format my PHP date to be the same, then JavaScript rejects it. Confused.
8 Answers 8
You should probably just use a timestamp
Then convert it to a Javascript date
Javascript Date class supports ISO 8601 date format so I would recommend:
documentation says that: format character ‘c’ is ISO 8601 date (added in PHP 5) example: 2004-02-12T15:19:21+00:00
It is pretty simple.
Is very simple, I’m use this:
An improvement or simplification of @jeremyharris answer would be this one:
DateTime objects in PHP have the getTimestamp() format, use it and multiply the value by 1000:
If you want to be more precise with your timestamp, you should use microtime() instead of now().
For a milisecond, javascript-like timestamp in php.
The most robust way is to extend your date object to parse strings as objects that your application can use. A quick example of parsing the mysql datetime string
If you are inclined you may include a second parameter that describes the type of string being passed with a default value, and do a string test to determine if it is a unix timestamp or a javascript timestamp or a string, and then use the returned object to parse your date and times, this is a more rounded solution because it will allow you to build an interface that dynamically handles multiple date specifiers.
В этом уроке рассмотрм, как на практике использовать функции PHP по получению даты и времени, а также рассмотрим способы вывода и форматирования даты и времени. Функции PHP, обрабатывающие дату и время, позволяют получать дату и время с того сервера, на котором выполняется сценарий. Также эти функции позволяют нам редактировать и форматировать полученные временные значения перед их отображением (выводом) на экран.
Функция PHP date()
Функция date() выводит текущие дату и время в заданном формате. Также функция может конвертировать формат отметки времени (временная метка, метка времени или timestamp) в удобочитаемый формат.
Синтаксис
Параметры функции date():
Примечание: Отметка времени — это последовательность символов, обозначающая дату и / или время, когда произошло определенное событие.
Обязательный параметр format функции date() указывает, как форматировать дату (или время). Формат задается управляющими командами (латиницей), при этом можно вставлять любые разделители между ними (дефисы, двоеточие и так далее).
Ниже представлена таблица с расшифровкой некоторых символов в строке format :
Символ в строке format
Описание
Пример возвращаемого значения
День
—
—
d
День месяца с 2-мя цифрами
от 01 до 31
D
День недели в текстовом формате, 3 символа
от Mon до Sun
z
Порядковый номер дня в году (начиная с 0)
От 0 до 365
Месяц
—
—
F
Полное название месяца, например, January или March
от January до December
m
Порядковый номер месяца, 2 цифры
от 01 до 12
M
Сокращенное название месяца, 3 символа
от Jan до Dec
Год
—
—
Y
Порядковый номер года, 4 цифры
Примеры: 1999, 2019
y
Порядковый номер года, 2 цифры
Примеры: 99, 19
Время
—
—
a
Ante meridiem (лат. «до полудня») или Post meridiem (лат. «после полудня») в нижнем регистре
am или pm
A
Ante meridiem или Post meridiem в верхнем регистре
AM или PM
g
Часы в 12-часовом формате
от 1 до 12
G
Часы в 24-часовом формате
от 0 до 23
h
Часы в 12-часовом формате
от 01 до 12
H
Часы в 24-часовом формате, 2 цифры
от 00 до 23
i
Минуты, 2 цифры
от 00 до 59
s
Секунды, 2 цифры
от 00 до 59
Ниже представлены некоторые примеры получения фактической информации о дате и времени: