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 .

È stato utile?

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:

  1. http://yuiblog.com/blog/ 2009/02/11 / data-formattazione-pt1-2 /
  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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top