2013-07-03 4 views
6

Ricevo una variabile stringa con data nel formato 6/1/2012, voglio convertirla in 01 Jun 2012. JS FIDDLE DEMOJavaScript converte la stringa in data con il formato (gg mmm aaaa), 01 giu 2012

Codice ho provato:

var t_sdate="6/1/2012";     
var sptdate = String(t_sdate).split("/"); 
var myMonth = sptdate[0]; 
var myDay = sptdate[1]; 
var myYear = sptdate[2]; 
var combineDatestr = myYear + "/" + myMonth + "/" + myDay; 

var dt = new Date(combineDatestr); 
var formatedDate= dt.format("dd mmm yyyy") 
alert(formatedDate); 

Ottenere uscita come 01 000 2012, richiesto come 01 Jun 2012

+0

Unchaught TypeError: Object [object Date] non ha alcun metodo 'format' era l'errore registrato nella console. Il codice che hai funzionerà se includi il plugin dateformat-js nel tuo codice. –

+0

non sto usando alcun file js esterno, è possibile farlo senza usare alcun file esterno –

+0

Guarda questo: http://stackoverflow.com/questions/1056728/formatting-a-date-in-javascript?rq=1 – alun

risposta

8

Prova questa:

function getFormattedDate(input) { 
    var pattern = /(.*?)\/(.*?)\/(.*?)$/; 
    var result = input.replace(pattern,function(match,p1,p2,p3){ 
     var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; 
     return (p2<10?"0"+p2:p2) + " " + months[(p1-1)] + " " + p3; 
    }); 

    alert(result); 
} 

getFormattedDate("6/1/2013"); 

Jsfiddle demo

+0

Soluzione perfetta, senza l'aggiunta di 'external js' –

+0

Soluzione localizzata che funziona solo per le impostazioni internazionali. –

+0

c'è un modo per stampare il nome del giorno insieme allo stesso codice? – Madhav

-1
"formato"

non è un metodo standard dell'oggetto Date

-4
dt.format("dd MMM yyyy") 

lettere maiuscole Usa.

+0

Come giustamente osserva guy777, JavaScript standard non ha una funzione 'format'. – Amadan

1
return $.datepicker.formatDate('dd-M-yy', new Date(dateVal)); //01-Dec-2014 
+3

Salve, e benvenuti a Stack Overflow. In generale, se i tag non includono 'jquery' (o un'altra libreria), le risposte dovrebbero astenersi dall'utilizzare le librerie per risolvere il problema (oppure possono suggerire che usare una libreria sarebbe più semplice). Qui, si presume che l'OP stia usando jQueryUI; la risposta sarebbe stata più utile se tu avessi suggerito che jQueryUI ha questa fantastica funzionalità, ma nessuna risposta alle librerie è ancora preferita (specialmente dato il commento di una domanda all'OP). Dai un'occhiata anche alla guida sulla formattazione di Stack Overflow: indentare quattro caratteri per i blocchi di codice (o inserire i backtick per il codice inline). – Amadan

2

Poiché altri utenti hanno già menzionato che "format" non è un metodo standard di oggetto Date. È possibile farlo senza utilizzare alcun metodo format (anche se non esiste alcuna)

var t_sdate = "6/1/2012"; 
var sptdate = String(t_sdate).split("/"); 
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; 
var myMonth = sptdate[0]; 
var myDay = sptdate[1]; 
var myYear = sptdate[2]; 
var combineDatestr = myDay + " " + months[myMonth - 1] + " " + myYear; 

alert(combineDatestr); 

JsFiddle Demo