2009-08-28 8 views

Odpowiedz

41

myślę, co naprawdę chcesz to:

$fromMYSQL = '2007-10-17 21:46:59'; 
echo date("m/d/Y", strtotime($fromMYSQL)); 

Drugi argument jest nieaktualny znacznik czasu i myślę, że to, co się dzieje jest PHP widzi swój ciąg jako -1 datownik ... więc 12/31/1969.

Tak więc, aby uzyskać znacznik czasu z wersji ciąg daty, należy użyć strtotime

+1

Zmień ciąg formatu na "m/d/Y", a zrobię awans. On chce 4 cyfry roku. – MitMaro

+0

dziękuję! Zadziałało! z php7 –

+0

Świetnie. Prace. Łatwy do wdrożenia. – MarcoZen

1

dwie kwestie:

1) Potrzebny jest kapitał Y

2) Musisz się prawidłowy typ daty.

Spróbuj

$fromMYSQL = date_create ('2007-10-17 21:46:59');  
echo date("m/d/Y", $fromMYSQL); 

Ups, strtotime jest właściwa konwersja do datownika. date_create zwraca obiekt DateTime.

2

Potrzebujesz kapitału Y w ciągu formatu daty. mała litera y podaje dwucyfrowy rok, a wielkie litery "Y" oznaczają czterocyfrowy rok.

$fromMYSQL = '2007-10-17 21:46:59'; 
echo date("m/d/Y", strtotime($fromMYSQL)); 

PHP Manual Page For date może być pomocne.

+1

masz rację uzyskania rok 4 cyfra jednak to nie pomaga w moim problemie z niepoprawnym wyświetlaniem daty, pokazuje 12/31/1969 – JasonDavis

+0

Odpowiedź zaktualizowana. 'strtotime' powinien przeanalizować czas z MySql. – MitMaro

7

SQL:

SELECT whatever, UNIX_TIMESTAMP(date) date FROM table WHERE whatever 

PHP:

date('m/d/Y', $result['date']); 
2

przejechałem to w mojej odpowiedzi na h ttp://stackoverflow.com/questions/499014/i-need-to-change-the-date-format-using-php/499021#499021 - w zasadzie, date() oczekuje uniksowego znacznika czasu, od którego oblicza datę/czas i formaty. Przekazujesz ciąg znaków, który pochodzi z wyniku zapytania MySQL, który prawdopodobnie zostaje zmanipulowany przez wpisywanie kodu PHP w coś, co wygląda jak uniksowy znacznik czasu, ale nie ma sensu.

Wyjaśniam kilka podejść do radzenia sobie z kolumnami daty w mojej odpowiedzi.

3

Najlepszym sposobem jest przekształcenie dateformat bezpośredni w swojej kwerendy:

$TimeFormat = "%m/%d/%Y"; // your pref. Format 

$sql = "SELECT DATE_FORMAT(DateCol , '" . $TimeFormat . "') as ConvertDate FROM tblTest"; 

przeciwnym razie można modyfikować tej funkcji do własnych potrzeb:

function format_date($original, $format) { 
    if (empty($original)) { 
     $original = date("Y-m-d H:i:s"); 
    } 
    $original = ereg_replace("30 Dez 1899", "30-01-1973", $original); 
    $format = ($format=='date' ? "%m-%d-%Y" : $format); 
    $format = ($format=='germandate' ? "%d.%m.%y" : $format); 
    $format = ($format=='germandaydate' ? "%A, %d.%m.%Y" : $format); 
    $format = ($format=='germantime' ? "%H:%M" : $format); 
    $format = ($format=='germandatetime' ? "%d.%m.%y %H:%M:%S" : $format); 
    $format = ($format=='datetime' ? "%m-%d-%Y %H:%M:%S" : $format); 
    $format = ($format=='mysql-date' ? "%Y-%m-%d" : $format); 
    $format = ($format=='mysql-datetime' ? "%Y-%m-%d %H:%M:%S" : $format); 
    $format = ($format=='mssql-date' ? "%Y%m%d" : $format); 
    $format = ($format=='mssql-datetime' ? "%Y%m%d %H:%M:%S" : $format); 
    $format = ($format=='Ymd' ? "%Y-%m-%d" : $format); 
    return !empty($original) ? strftime($format, strtotime($original)) : ""; 
} 
Powiązane problemy