Перетворити часову позначку в читану PHP дати / часу


227

У мене в сеансі збережена мітка часу (1299446702).

Як я можу перетворити це на читабельну дату / час у PHP? Я спробував srttotime і т. Д. Безрезультатно.

Відповіді:



84

strtotime робить рядок дати у мітку часу. Ви хочете зробити навпаки, яка є дата . Типовий формат дати mysql - date('Y-m-d H:i:s'); Перевірте сторінку керівництва щодо того, що представляють інші літери.

Якщо у вас є позначка часу, яку ви хочете використовувати (мабуть, ви це робите), це другий аргумент date().


4
Було б добре , до відома , що я пройшов в моїй поточну дату наступних чином :echo date('m/d/Y', strtotime($current_date_variable);
cwiggo

чи немає команди перетворити часову позначку в їх стандартизацію дат, тому що я перетворив дату в часову позначку unix, але в моїй базі даних це все-таки дата, я спробую це, але я все ще вважаю дивно, що для неї немає конкретної команди
Marc Roelse

64

Щойно я додав H: i: s до відповіді Rocket, щоб отримати час разом із датою.

echo date('m/d/Y H:i:s', 1299446702);

Вихід: 06.03.2011 16:25:02


49
$timestamp = 1465298940;
$datetimeFormat = 'Y-m-d H:i:s';

$date = new \DateTime();
// If you must have use time zones
// $date = new \DateTime('now', new \DateTimeZone('Europe/Helsinki'));
$date->setTimestamp($timestamp);
echo $date->format($datetimeFormat);

результат: 2016-06-07 14:29:00

Інші часові пояси:


23

Якщо ви використовуєте PHP date(), ви можете використовувати цей код, щоб отримати дату, час, секунду тощо.

$time = time();               // you have 1299446702 in time
$year = $time/31556926 % 12;  // to get year
$week = $time / 604800 % 52;  // to get weeks
$hour = $time / 3600 % 24;    // to get hours
$minute = $time / 60 % 60;    // to get minutes
$second = $time % 60;         // to get seconds

12
Як щодо високосного року та другого ...?
Petteri Hietavirta

$year = date('Y', $time)
Рубен Казумов

16

Я знаю, що це одне старе питання, але його високий показник в результатах пошуку.

Якщо хтось хоче перетворення часових позначок безпосередньо в об'єкт DateTime, є простий однолінійний:

$timestamp = 1299446702;
$date = DateTime::createFromFormat('U', $timestamp);

Після коментаря @sromero параметр часового поясу (3-й параметр в DateTime :: createFromFormat ()) ігнорується при передачі часової позначки unix, тому код нижче не є необхідним.

$date = DateTime::createFromFormat('U', $timestamp, new DateTimeZone('UTC'); // not needed, 3rd parameter is ignored

Ви можете переглянути посібник PHP для DateTime :: createFromFormat для отримання додаткової інформації та параметрів.


1
Jus коментар до вашого останнього рядка коду: відповідно до сторінки керівництва, на яку ви посилаєтесь: "Примітка: Параметр часового поясу та поточний часовий пояс ігноруються, коли параметр часу або містить часову позначку UNIX (наприклад, 946684800), або вказує часовий пояс (наприклад, 2010 -01-28T15: 00: 00 + 02: 00) ".
sromero

@sromero Ви маєте рацію. Параметр часового поясу в цьому випадку ігнорується.
Паскаль




6

Спробуйте це:

echo date('m/d/Y H:i:s', 1541843467);

1
Привіт там! Здається, ця відповідь вже запропонована; див. верхню відповідь.
капелюх

4

echo date("l M j, Y",$res1['timep']);
Це дійсно добре для перетворення часової позначки unix у читану дату разом із днем. Приклад: четвер, 7 липня 2016 року


1
Подібні відповіді вже розміщені, який плюс у вашій відповіді?
Steffen Harbich


4
$epoch = 1483228800;
$dt = new DateTime("@$epoch");  // convert UNIX timestamp to PHP DateTime
echo $dt->format('Y-m-d H:i:s'); // output = 2017-01-01 00:00:00

У прикладах вище "r" та "Ymd H: i: s" - це формати дати PHP, інші приклади:

Формат виводу

r              -----    Wed, 15 Mar 2017 12:00:00 +0100 (RFC 2822 date)
c              -----    2017-03-15T12:00:00+01:00 (ISO 8601 date)
M/d/Y          -----    Mar/15/2017
d-m-Y          -----    15-03-2017
Y-m-d H:i:s    -----    2017-03-15 12:00:00
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.