Konwertuj znacznik czasu na czytelną datę / godzinę PHP


227

Mam znacznik czasu zapisany w sesji (1299446702).

Jak przekonwertować to na czytelną datę / godzinę w PHP? Próbowałem srttotime itp. Bezskutecznie.

Odpowiedzi:



84

strtotime przekształca ciąg daty w znacznik czasu. Chcesz zrobić coś przeciwnego, czyli datę . Typowy format daty mysql to date('Y-m-d H:i:s'); Sprawdź stronę podręcznika pod kątem tego, co reprezentują inne litery.

Jeśli masz znacznik czasu, którego chcesz użyć (najwyraźniej masz), jest to drugi argument argumentu date().


4
dobrze byłoby zauważyć, że echo date('m/d/Y', strtotime($current_date_variable);
podałem

czy nie ma polecenia konwertowania znacznika czasu na ich standaryzację czasu, ponieważ przekonwertowałem go na uniksowy znacznik czasu, ale w mojej bazie danych wciąż jest to czas i spróbuję tego, ale nadal wydaje mi się dziwne, że nie ma określonego polecenia
Marc Roelse

64

Właśnie dodałem H: i: s do odpowiedzi Rocket, aby uzyskać czas wraz z datą.

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

Wyjście: 03/06/2011 16:25:02



23

Jeśli używasz PHP date(), możesz użyć tego kodu, aby uzyskać datę, godzinę, sekundę itp.

$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
Co powiesz na rok przestępny i drugi ...?
Petteri Hietavirta

$year = date('Y', $time)
Ruben Kazumov

16

Wiem, że to stare pytanie, ale wysokie w wynikach wyszukiwania.

Jeśli ktoś chce konwersji sygnatury czasowej bezpośrednio na obiekt DateTime, istnieje prosty jednowierszowy:

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

Po komentarzu @sromero parametr timezone (trzeci parametr w funkcji DateTime :: createFromFormat ()) jest ignorowany po przekazaniu znacznika czasu unix, więc poniższy kod nie jest potrzebny.

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

Możesz sprawdzić instrukcję PHP dla DateTime :: createFromFormat, aby uzyskać więcej informacji i opcji.


1
Po prostu komentarz na temat ostatniego wiersza kodu: zgodnie z linkiem do strony podręcznika: „Uwaga: parametr strefy czasowej i bieżąca strefa czasowa są ignorowane, gdy parametr czasu zawiera znacznik czasu UNIX (np. 946684800) lub określa strefę czasową (np. 2010 -01-28T15: 00: 00 + 02: 00). ”
sromero

@sromero Masz rację. W takim przypadku parametr strefy czasowej jest ignorowany.
Pascal

14

Spróbuj.

<?php
 $timestamp=1333342365;
 echo gmdate("Y-m-d\TH:i:s\Z", $timestamp);
 ?>

8

Możesz spróbować:

   $mytimestamp = 1465298940;

   echo gmdate("m-d-Y", $mytimestamp);

Wynik :

06-07-2016



6

Spróbuj tego:

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

1
Cześć! Wydaje się, że ta odpowiedź została już zaproponowana; zobacz najwyższą odpowiedź.
kapelusz

4

echo date("l M j, Y",$res1['timep']);
Jest to naprawdę dobre do konwertowania uniksowego znacznika czasu na czytelną datę wraz z dniem. Przykład: czwartek 7 lipca 2016 r


1
Podobne odpowiedzi są już opublikowane, jaki jest plus informacji w twojej odpowiedzi?
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

W powyższych przykładach „r” i „Ymd H: i: s” to formaty daty PHP, inne przykłady:

Formatuj wyjście

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.