Modifica del formato di una data nell'interfaccia utente di Yahoo
-
05-07-2019 - |
Domanda
Sto utilizzando il calendario dall'interfaccia utente di Yahoo come segue:
calDate = (calDate.getMonth () + 1) + '/' + calDate.getDate () + '/' + calDate.getFullYear ();
Visualizza un formato MMDDYYYY
.
Voglio cambiare questo formato in YYYY-MM-DD
in modo da poterlo inserire in un database MySQL.
Ho cambiato il codice in:
calDate = calDate.getFullYear () + '-' + (calDate.getMonth () + 1) + '-' + calDate.getDate ();
Funzionava ma ora il problema è che quando voglio cambiare la data selezionata il calendario non mostra la data e mostra invece NAN
.
Soluzione
Dovresti cambiare il formato della data appena prima che sia inserita sul lato server, lasciare che il lato client abbia il formato desiderato e cambiare la data più tardi.
Altri suggerimenti
In genere è meglio passare la data al back-end come timestamp unix e convertirla nel database stesso. Nel codice in cui costruisci i tuoi dati POST per il server, passeresti qualcosa del genere:
var t = calDate.getTime()/1000;
Nota la divisione per 1000. Ciò è necessario perché i timestamp javascript sono espressi in millisecondi, mentre MySQL richiede secondi.
Nella tua istruzione SQL, passerai il timestamp così com'è e utilizzerai la funzione FROM_UNIXTIME per convertirlo nel formato richiesto:
INSERT INTO ... VALUES ( FROM_UNIXTIME($t), ...)
Naturalmente ci sarà un po 'di codice tra questi che converte t
da javascript in $ t
nello script di back-end, quindi lo passa a SQL.
Ora, se hai davvero bisogno di formattare le date sul front-end, puoi utilizzare l'utilità YAHOO.util.Date
. Fai qualcosa del genere:
alert(YAHOO.util.Date.format(calDate, {format: "%Y-%m-%d" }));
Molto più facile che chiamare getFullYear, getMonth
e getDate
bluesmoon ha anche scritto due eccellenti articoli su YUIBlog sull'argomento della formattazione della data:
- http://yuiblog.com/blog/ 2009/02/11 / data-formattazione-pt1-2 /
- http://yuiblog.com/blog/2009/ 25/02 / data-formattazione-pt2 /
-Eric
cal1.cfg.setProperty("DATE_FIELD_DELIMITER", "-");
cal1.cfg.setProperty("MDY_YEAR_POSITION", 1);
cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
cal1.cfg.setProperty("MDY_DAY_POSITION", 3);