9

Desidero utilizzare il datapicker di Twitter Bootstrap. Voglio che l'effettivo input di DISPLAY nel formato mm/gg/aaaa, ma il valore dell'oggetto che voglio che crei/passi sia in yyyy-mm-dd. Sono a conoscenza di questa proprietà:Data di avvio Datepicker data di avvio in modo diverso sul display rispetto al valore

"data-date-format" => "mm-dd-yyyy" 

Ma questo cambia sia il modo in cui viene visualizzata la data e come il valore è formattato. Ho anche questo nel mio JS:

$(this).datepicker({ 
    format: 'yyyy-mm-dd', 
    autoclose: true, 
    todayHighlight: true, 
    pickTime: false 
}); 

Io non sono davvero sicuro di quello che la parte in formato sta facendo, ma cambiando non cambia il valore che viene creato dall'ingresso.

+1

Mi piacerebbe vedere questa funzione troppo, voglio visualizzare la data in formato UK locale (gg/mm/aaaa), ma ha bisogno di essere analizzato come aaaa-mm-gg a causa di un pezzo di software Sto usando. Inoltre penso che "data-date-format" e "format" siano la stessa cosa solo uno è collegato tramite HTML e l'altro tramite JS. – alvinc

+0

Vedere la mia risposta qui https://stackoverflow.com/a/47466659/1153909 –

risposta

1

c'è una soluzione da bootstrap per questo problema.

come detto sul docs

è possibile impostare il formato come un oggetto con 2 funzioni di analisi: toValue e todisplay.

$('.datepicker').datepicker({ 
format: { 
    /* 
    * Say our UI should display a week ahead, 
    * but textbox should store the actual date. 
    * This is useful if we need UI to select local dates, 
    * but store in UTC 
    */ 
    toDisplay: function (date, format, language) { 
     var d = new Date(date); 
     d.setDate(d.getDate() - 7); 
     return d.toISOString(); 
    }, 
    toValue: function (date, format, language) { 
     var d = new Date(date); 
     d.setDate(d.getDate() + 7); 
     return new Date(d); 
    } 
    }, 
    autoclose: true 
}); 
+1

Questa è la soluzione perfetta. Grazie. –

+5

Questo non risolve affatto il problema originale: la data visualizzata è sempre quella pubblicata sul modulo di invio. Ciò consente solo di definire le funzioni di conversione da stringa a data e da data a stringa in modo che il campo di input possa essere modificato manualmente in modo coerente con la vista del calendario. – ZeRemz

+0

@ZeRemz bene sembra funzionare per me e per l'OP, così strano. –

4

Quando mi trovo di fronte a un problema del genere, in cui desidero che i dati vengano visualizzati in modo diverso da quello che voglio comunicare, di solito scrivo un breve script per copiare il valore in un elemento nascosto dove mantengo i dati "correttamente" formattati che l'utente non vede.

Questa è la soluzione migliore che posso offrire al momento, poiché non conosco alcun modo per convincere il Bootstrap Datepicker a utilizzare due formati contemporaneamente.