Konwersja z DateTime MySQL do innego formatu za pomocą PHP
Mam kolumnę datetime
W MySQL.
Jak mogę przekonwertować go na wyświetlacz jako mm/dd/yy H:M (AM/PM) używając PHP?
17 answers
Jeśli szukasz sposobu na normalizację daty do formatu MySQL, użyj następującego
$phpdate = strtotime( $mysqldate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
Linia $phpdate = strtotime( $mysqldate )
przyjmuje łańcuch znaków i wykonuje serię heurystyk, aby przekształcić ten łańcuch w uniksowy znacznik czasu.
Linia $mysqldate = date( 'Y-m-d H:i:s', $phpdate )
używa tego znacznika czasu i PHP date
funkcja przywracania znacznika czasu do standardowego formatu daty MySQL.
(Uwaga wydawcy: ta odpowiedź jest tutaj ze względu na oryginalne pytanie z mylącym sformułowaniem, a Ogólne Przydatność Google ta odpowiedź zapewniona nawet jeśli nie " bezpośrednio odpowiedzieć na pytanie, które teraz istnieje)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-16 19:09:00
Aby przekonwertować datę pobraną z MySQL na żądany format(mm/dd/yy H:M (AM/PM)
):
// $datetime is something like: 2014-01-31 13:05:59
$time = strtotime($datetimeFromMysql);
$myFormatForView = date("m/d/y g:i A", $time);
// $myFormatForView is something like: 01/31/14 1:05 PM
Zobacz opcje formatowania daty PHP, aby dostosować format.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-21 10:23:52
Jeśli używasz PHP 5, Możesz również spróbować
$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-13 20:02:59
$valid_date = date( 'm/d/y g:i A', strtotime($date));
Bibliografia: http://php.net/manual/en/function.date.php
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-24 13:24:19
Wreszcie właściwe rozwiązanie dla PHP 5.3 i wyżej:
$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date);
echo $date->format('m/d/y h:i a');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-21 00:44:39
Łatwiejszym sposobem byłoby sformatowanie daty bezpośrednio w zapytaniu MySQL, zamiast PHP. Zobacz Instrukcja MySQL dla DATE_FORMAT .
Jeśli wolisz robić to w PHP, potrzebujesz funkcji date , ale najpierw musisz przekonwertować wartość bazy danych na znacznik czasu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-25 23:15:23
Zapomnij o wszystkim. Wystarczy użyć:
$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-09 16:51:03
Aby poprawnie sformatować obiekt DateTime
w PHP do przechowywania w MySQL użyj znormalizowanego formatu, którego używa MySQL, czyli ISO 8601 .
PHP ma ten format zapisany jako stała od wersji 5.1.1 i zdecydowanie polecam go używać, a nie ręcznie wpisywać ciąg znaków za każdym razem.
$dtNow = new DateTime();
$mysqlDateTime = $dtNow->format(DateTime::ISO8601);
To, oraz lista innych stałych DateTime PHP są dostępne w http://php.net/manual/en/class.datetime.php#datetime.constants.types
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-31 17:42:08
To powinno sformatować pole w zapytaniu SQL:
SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-09 16:49:21
Użyj funkcji date :
<?php
echo date("m/d/y g:i (A)", $DB_Date_Field);
?>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-25 23:16:05
W zależności od konfiguracji DateTime MySQL. Typowo: 2011-12-31 07:55:13 format. Ta bardzo prosta funkcja powinna wykonywać magię:
function datetime()
{
return date( 'Y-m-d H:i:s', time());
}
echo datetime(); // display example: 2011-12-31 07:55:13
[2]}lub trochę więcej zaliczki, aby dopasować pytanie.
function datetime($date_string = false)
{
if (!$date_string)
{
$date_string = time();
}
return date("Y-m-d H:i:s", strtotime($date_string));
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-29 11:45:52
SELECT
DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo
Jeśli nie chcesz zmieniać każdej funkcji w kodzie PHP, aby pokazać oczekiwany format daty, zmień go w źródle-Twojej bazie danych.
Ważne jest nazwanie wierszy operatorem jako jak w powyższym przykładzie (jako dateFrom, jako dateUntil). Nazwy, które tam piszesz, są nazwami, wiersze zostaną wywołane w Twoim wyniku.
Wynikiem tego przykładu będzie
[dzień miesiąca, numeryczny (0..31)].[Nazwa miesiąca (styczeń..Grudnia)].[Rok, numeric, four digits]
Przykład: 5.Sierpień.2015
Zmień kropki za pomocą wybranego separatora i sprawdź funkcję DATE_FORMAT(Data,format) dla większej liczby formatów dat.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-09 18:12:37
Możesz również poprosić, aby Twoje zapytanie zwróciło czas jako uniksowy znacznik czasu. To pozbyłoby się potrzeby wywołania strtotime()
i sprawiłoby, że sprawy byłyby mniej intensywne po stronie PHP...
select UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;
Następnie w PHP po prostu użyj funkcji date()
, aby sformatować go w dowolny sposób.
<?php
echo date('l jS \of F Y h:i:s A', $row->unixtime);
?>
Lub
<?php
echo date('F j, Y, g:i a', $row->unixtime);
?>
Podoba mi się to podejście, a nie używanie MySQL'S DATE_FORMAT
funkcja, ponieważ pozwala na ponowne użycie tego samego zapytania do pobrania danych i pozwala zmienić formatowanie w PHP.
Denerwujące jest posiadanie dwóch różnych zapytań, aby zmienić sposób, w jaki Data wygląda w interfejsie użytkownika.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-09 16:45:24
Możesz mieć problemy z datami nie zwracanymi w uniksowym znaczniku czasu, więc to działa dla mnie...
return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-16 23:52:33
To zadziała...
echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-12 06:11:04
Używając PHP w wersji 4.4.9 i MySQL 5.0, zadziałało mi to:
$oDate = strtotime($row['PubDate']);
$sDate = date("m/d/y",$oDate);
echo $sDate
PubDate
jest kolumną w MySQL.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-09 16:47:30
$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-02 13:00:47