Чтобы напечатать дату в ISO 8601 в PHP, вы можете использовать довольно простую функцию процедурного стиля date()
, подобную этой :
$isoDate = date('c') // outputs 2017-10-18T22:44:26+00:00 'Y-m-d\TH:i:sO'
Или, если вы предпочитаете стиль ООП, вы можете использовать DateTime()
следующим образом:
$date = DateTime('2010-01-01');
echo date_format($date, 'c');
Список форматов/констант даты, предоставляемых PHP, упоминается здесь:
const string ATOM = "Y-m-d\TH:i:sP" ;
const string COOKIE = "l, d-M-Y H:i:s T" ;
const string ISO8601 = "Y-m-d\TH:i:sO" ;
const string RFC822 = "D, d M y H:i:s O" ;
const string RFC850 = "l, d-M-y H:i:s T" ;
const string RFC1036 = "D, d M y H:i:s O" ;
const string RFC1123 = "D, d M Y H:i:s O" ;
const string RFC2822 = "D, d M Y H:i:s O" ;
const string RFC3339 = "Y-m-d\TH:i:sP" ;
const string RSS = "D, d M Y H:i:s O" ;
const string W3C = "Y-m-d\TH:i:sP" ;
Так хорошо, что у нас есть формат ISO 8601. Однако значение может отличаться от ожидаемого (YYYY-MM-DDTHH:MM:SS.mmmmmmmZ
). Согласно странице Википедии ISO 8601, допустимы следующие форматы:
2017-10-18T22:33:58+00:00
2017-10-18T22:33:58Z
20171018T223358Z
PHP, вероятно, предпочитает первый. У меня была несколько похожая проблема с датами между PHP и Javascript, потому что у Javascript в конце есть конечный Z
. Я закончил тем, что написал это, чтобы решить проблему:
$isoDate = date('Y-m-d\TH:i:s.000') . 'Z'; // outputs: 2017-10-18T23:04:17.000Z
ПРИМЕЧАНИЕ. Причина, по которой у меня есть 3 десятичных знака, заключается в том, что я заметил, что дата Javascript использует этот формат, возможно, вам это не нужно.
person
nkh
schedule
18.10.2017