Преобразование одного формата даты в другой в PHP

PHP 5.3 и выше

Используйте DateTime::createFromFormat. Это позволит вам указать точную маску - используя date() синтаксис - для анализа дат входящей строки.

PHP 5.2 и ниже

Вам придется проанализировать элементы (год, месяц, день, час, минута, секунда) вручную, используя substr() и передать результаты в mktime() , который создаст вам метку времени.

Вариант 1.

$old_date = date('l, F d y h:i:s');              // returns Saturday, January 30 10 02:06:34
$old_date_timestamp = strtotime($old_date);
$new_date = date('Y-m-d H:i:s', $old_date_timestamp);   

Вариант 2.

$myDateTime = DateTime::createFromFormat('Y-m-d', $dateString);
$newDateString = $myDateTime->format('m/d/Y');


$now = new DateTime();
$timestring = $now->format('Y-m-d h:i:s');

Вариант 3.

$timestamp = strtotime('2008-07-01T22:35:17.02');
$new_date_format = date('Y-m-d H:i:s', $timestamp);

$new_date_format = date('Y-m-d H:i:s', strtotime('2008-07-01T22:35:17.02'));


$date = new DateTime('2008-07-01T22:35:17.02');
$new_date_format = $date->format('Y-m-d H:i:s');

Работа с временными метками Unix

<?php
// date()принимает временную метку Unix в качестве второго параметра
// и возвращает отформатированную дату:

$new_date_format = date('Y-m-d H:i:s', '1234567890');

// DateTime() работает с отметками времени Unix, добавляя @перед отметкой времени:

$date = new DateTime('@1234567890');
$new_date_format = $date->format('Y-m-d H:i:s');

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

// Обрежьте последние три цифры с помощьюsubstr()


$timestamp = substr('1234567899000', -3);

// Разделите substr на 1000
// Вы также можете преобразовать временную метку в секунды, разделив ее на 1000. 
// Поскольку временная метка слишком велика для 32-битных систем, 
// чтобы выполнять математические операции, 
// вам потребуется использовать библиотеку BCMath для выполнения 
// математических операций в виде строк:

$timestamp = bcdiv('1234567899000', '1000');

// Чтобы получить временную метку Unix, вы можете использовать strtotime(), 
// которая возвращает временную метку Unix:

$timestamp = strtotime('1973-04-18');

// С DateTime() вы можете использоватьDateTime::getTimestamp()

$date = new DateTime('2008-07-01T22:35:17.02');
$timestamp = $date->getTimestamp();

// Если вы используете PHP 5.2, вместо этого вы можете 
// использовать параметр форматирования:

$date = new DateTime('2008-07-01T22:35:17.02');
$timestamp = $date->format('U');
?>

Работа с нестандартными и неоднозначными форматами даты

<?php
$date = DateTime::createFromFormat('F-d-Y h:i A', 'April-18-1973 9:48 AM');
$new_date_format = $date->format('Y-m-d H:i:s');

// В PHP 5.4 мы получили возможность доступа к членам класса 
// при создании экземпляра, что позволяет нам превратить наш 
// DateTime()код в однострочный:

$new_date_format = (new DateTime('2008-07-01T22:35:17.02'))->format('Y-m-d H:i:s');

$new_date_format = DateTime::createFromFormat('F-d-Y h:i A', 'April-18-1973 9:48 AM')->format('Y-m-d H:i:s');

?>

Вариант 4.

$old_date = date('y-m-d-h-i-s');
$new_date = date('Y-m-d H:i:s', strtotime($old_date));

$date = DateTime::createFromFormat('d-m-Y H:i:s',$date)->format('Y-m-d H:i:s');

Дата и время ВремяПрограммированиеPHP 43
Поделитесь с другими:

Если материал понравился Вам и оказался для Вас полезным, поделитесь им со своими друзьями!