Domanda

Ho una colonna datetime in MySQL.

Come posso convertirlo sul display come mm / gg / aa H: M (AM / PM) usando PHP?

È stato utile?

Soluzione 2

Per convertire una data recuperata da MySQL nel formato richiesto ( mm / gg / aa 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

Consulta le Opzioni di formattazione della data PHP per regolare il formato.

Altri suggerimenti

Se stai cercando un modo per normalizzare una data nel formato MySQL, usa quanto segue

$phpdate = strtotime( $mysqldate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );

La riga $ phpdate = strtotime ($ mysqldate) accetta una stringa ed esegue una serie di euristiche per trasformare quella stringa in un timestamp unix.

La riga $ mysqldate = date ('Ymd H: i: s', $ phpdate) usa quel timestamp e PHP date per ripristinare il timestamp nel formato data standard di MySQL.

( Nota dell'editore : questa risposta è qui a causa di una domanda originale con una formulazione confusa, e dell'utilità generale di Google fornita da questa risposta anche se non ha risposto direttamente alla domanda che esiste ora)

Se stai usando PHP 5, puoi anche provare

$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
$valid_date = date( 'm/d/y g:i A', strtotime($date));

Riferimento: http://php.net/manual /en/function.date.php

Finalmente la soluzione giusta per PHP 5.3 e versioni successive:

$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date);
echo $date->format('m/d/y h:i a');

Un modo più semplice sarebbe formattare la data direttamente nella query MySQL, anziché in PHP. Consulta la voce manuale MySQL per DATE_FORMAT .

Se preferisci farlo in PHP, allora hai bisogno della funzione date , ma tu " Dovrò prima convertire il valore del tuo database in un timestamp.

Dimentica tutto. Basta usare:

$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))

Per formattare correttamente un oggetto DateTime in PHP per la memorizzazione in MySQL, utilizza il formato standardizzato utilizzato da MySQL, che è ISO 8601 .

PHP ha questo formato memorizzato come costante dalla versione 5.1.1 e consiglio vivamente di usarlo piuttosto che digitare manualmente la stringa ogni volta.

$dtNow = new DateTime();
$mysqlDateTime = $dtNow->format(DateTime::ISO8601);

Questo e un elenco di altre costanti DateTime di PHP sono disponibili su http://php.net/manual/en/class.datetime.php#datetime.constants.types

Questo dovrebbe formattare un campo in una query SQL:

SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename

Utilizza la funzione date :

<?php
    echo date("m/d/y g:i (A)", $DB_Date_Field);
?>

A seconda della configurazione del datetime di MySQL. In genere: formato 2011-12-31 07:55:13 . Questa funzione molto semplice dovrebbe fare la magia:

function datetime()
{
    return date( 'Y-m-d H:i:s', time());
}

echo datetime(); // display example: 2011-12-31 07:55:13

O un po 'più di anticipo per abbinare la domanda.

function datetime($date_string = false)
{
    if (!$date_string)
    {
        $date_string = time();
    }
    return date("Y-m-d H:i:s", strtotime($date_string));
}
SELECT 
 DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
 DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo

Se non vuoi cambiare tutte le funzioni nel tuo codice PHP, per mostrare il formato della data prevista, modificalo alla fonte - il tuo database.

È importante nominare le righe con l'operatore come come nell'esempio sopra (come dateFrom, come dateUntil). I nomi che scrivi lì sono i nomi, le righe verranno chiamate nel tuo risultato.

L'output di questo esempio sarà

[Giorno del mese, numerico (0..31)]. [Nome del mese (gennaio ... dicembre)]. [Anno, numerico, quattro cifre]

Esempio: 5.agosto.2015

Cambia i punti con il separatore scelto e controlla DATE_FORMAT (data, formato) per altri formati di data.

Puoi anche fare in modo che la tua query restituisca l'ora come data / ora Unix. Ciò eliminerebbe la necessità di chiamare strtotime () e rendere le cose un po 'meno intense dal lato PHP ...

select  UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;

Quindi in PHP basta usare la funzione date () per formattarla nel modo che preferisci.

<?php
  echo date('l jS \of F Y h:i:s A', $row->unixtime);
?>

o

<?php
  echo date('F j, Y, g:i a', $row->unixtime);
?>

Mi piace questo approccio piuttosto che usare MySQL DATE_FORMAT funzione, perché consente di riutilizzare la stessa query per acquisire i dati e consente di modificare la formattazione in PHP.

È fastidioso avere due query diverse solo per cambiare l'aspetto della data nell'interfaccia utente.

Potresti avere problemi con le date non restituite in Unix Timestamp, quindi questo funziona per me ...

return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))

Funzionerà ...

echo date('m/d/y H:i (A)',strtotime($data_from_mysql));

Uso di PHP versione 4.4.9 & amp; MySQL 5.0, ha funzionato per me:

$oDate = strtotime($row['PubDate']);
$sDate = date("m/d/y",$oDate);
echo $sDate

PubDate è la colonna in MySQL .

$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', <*>POST['date'])))."'";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top