Как я могу отформатировать временные метки со встроенным символом "T"?


Мне нужно отформатировать метку времени в формате ISO 8601 (например, 2001-10-26T21:32:52). Когда я использую функцию date() в PHP, она заменяет T часовым поясом (как и должно быть).

Команда, которую я использую, такова:

$time = date("y-m-dTH:i:s", time());

Это приводит к: 10-02-13EST10:21:03

Как мне заставить его вставить фактический T, а не заменить на EST?

Author: Toby Speight, 2010-02-13

4 answers

Ваш формат должен быть: "c"

$time = date("c", time());

Из Руководства по PHP:

Format Descriptions                        Example
c      ISO 8601 date (added in PHP 5)   2004-02-12T15:19:21+00:00
 19
Author: Patrick Desjardins, 2010-02-13 15:28:58

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

$time = date("y-m-d\TH:i:s", time());
 6
Author: Matteo Riva, 2017-05-08 13:49:34

Вы можете отформатировать части даты и времени отдельно, а затем объединить эти две части с "T":

<?php
 $time = time(); 
 $time = date( "y-m-d",$time )."T".date( "H:i:s", $time );
?>
 1
Author: GeekTantra, 2017-05-08 13:48:52

DATE_ATOM предусмотрен для этого формата:

$theStart_date = date(DATE_ATOM, strtotime($start_date));

Вывод:

2013-04-10T09:10:30-04:00
 1
Author: Rohit Dubey, 2017-05-08 13:50:23