2009-06-17 7 views
30

Vorrei poter convertire una stringa di formato data Java, ad es. dd/MM/yyyy (07/06/2009) in una stringa di formato data JavaScript, ad es. dd/mm/yy (07/06/2009).Formato data Java in formato data JavaScript

Qualcuno l'ha già fatto prima o non ha idea di dove possa trovare del codice che lo faccia già?

Grazie in anticipo.

Edit:

Grazie per tutte le risposte, ma ora mi rendo conto mio errore e, eventualmente, motivo per cui molti di voi stavano lottando per capire la domanda; JavaScript non ha un'abilità di formattazione della data incorporata. Sto usando jQuery UI datepicker e ho impostato il suo formato data, assumendo che chiamerebbe una funzione JS standard ad un certo punto, non usando la sua libreria! Quando ho cercato su google per la formattazione delle stringhe, ho saltato direttamente ai tavoli di quali lettere potevano essere usate, saltando il bit all'inizio spiegando come utilizzare lo script.

In ogni caso dovrò andare avanti ed eventualmente scrivere il mio credo, convertendo una stringa di formato data Java in una stringa di formato data jQuery (o il più vicino possibile) - Sto lavorando sul i18n del nostro prodotto e ho creato una classe java che memorizza la stringa di formato data preferita usata in tutta l'applicazione, la mia intenzione era quella di avere anche la possibilità di fornire qualsiasi jsps con la stringa di formato che è equivalente in JS.

Grazie comunque.

+1

"dd/mm/aa (07/06/2009)" non calcola, ma io non lo modificherò perché non sono sicuro di cosa esattamente intendi. – annakata

+1

Potrebbe fornire alcune informazioni su come si passa la data Java al codice Javascript? per esempio. stai scrivendo usando un JSP? Ciò aiuterà molto nel rispondere alla tua domanda. –

+1

Intendevi "gg/mm/aa (07/06/09)"? Altrimenti non capisco la differenza tra le due date di esempio che hai dato. – Nosredna

risposta

0

Il codice javascript in this page implementa alcune funzioni di data e "usano le stesse stringhe di formato della classe java.text.SimpleDateFormat, con alcune eccezioni secondarie". Non è lo stesso che vuoi ma può essere un buon punto di partenza.

2

Un tema simile è stato risposto qui: Converting dates in JavaScript

personalmente ho trovato che questo è un piuttosto grande dolore e ha preso il suggerimento dell'autore e utilizzato una biblioteca. Come notato, jQuery datepicker ne ha uno che è una soluzione praticabile se puoi permetterti il ​​sovraccarico del download per la tua applicazione o già utilizzarlo.

+1

Penso davvero che una libia sia anche la strada da percorrere per questa. FWIW, anche il dojo ne ha uno buono. http://docs.dojocampus.org/dojo/date/locale – seth

41

Se è necessario passare una data da Java a JavaScript, il modo migliore per farlo, credo, sarebbe quello di convertire la data Java in millisecondi usando date.getTime(), creare una data JavaScript inizializzata con questo valore in millisecondi con new Date(milliseconds) e quindi formattare la data con il mezzo dell'oggetto Data JavaScript, ad esempio: date.toLocaleString().

+1

Ho un problema simile con Java Date -> Javascript Date -> DatePicker. Questo mi ha aiutato molto più vicino. Grazie! – jjohn

+1

La migliore soluzione. Risolto il fatto che SimpleDateFormat non fornisce un mese a base zero. – cherouvim

+1

soluzione più pulita in quanto dipende solo da un dato universalmente disponibili, rendendo il JS-end facilmente riutilizzabile per i client non-Java e – Angad

0

Se si desidera solo per formato Date le mie estensioni data farà che bene - analizza anche i formati di dati e fa un sacco di data di matematica/confronta così:

DP_DateExtensions Library

Non sono sicuro se' Ti aiuterò, ma l'ho trovato inestimabile in diversi progetti.

4

È possibile utilizzare il mio plug-in jquery-dateFormat.

// Text 
$.format.date("2009-12-18 10:54:50.546", "dd/MM/yyyy"); 
// HTML Object 
$.format.date($("#spanDate").text(), "dd/MM/yyyy"); 
// Scriptlet 
$.format.date("<%=java.util.Date().toString()%>", "dd/MM/yyyy"); 
// JSON 
var obj = ajaxRequest(); 
$.format.date(obj.date, "dd/MM/yyyy"); 
+0

Che cosa succede se la mia data è in questo formato \t \t \t \t // 4 Luglio, 2015 10:45 : 22 AM anziché // 2009-12-18 10: 54: 50.546 – Milson

+0

Hi @Milson, jquery-dataFormat supporta anche questo. Alcuni esempi: https://github.com/phstc/jquery-dateFormat/blob/master/test/format_date_spec.js#L72 –

0

Questa libreria JavaScript dovrebbe essere in grado di aiutarti.

http://plugins.jquery.com/project/fIsForFormat

(non so perché hanno come plugin jQuery, perché funziona in modo indipendente.)

desideri semplicemente dividere la data originale formattato nei suoi singoli elementi e quindi creare un nuovo oggetto data con questi elementi. Quindi, usa il metodo "Date.f()" di questa libreria per stamparlo in qualsiasi formato tu voglia.

Ad esempio:

var dateOld = "11/27/2010", 
    dateArr = date1.split("/"), 
    dateObj = new Date(dateArr[2], dateArr[0], dateArr[1]), 
    dateNew = dateObj.f("MMM d, yyyy"); 

document.write("Old Format: " + dateOld + "<br/>New Format: " + dateNew); 
1

Questo funziona bene per me:

<% 
Date date = Calendar.getInstance().getTime(); 
%> 

<script> 
var d = new Date(<%=date.getTime()%>); 
alert(d); 
</script> 
1

Partenza moment.js! È "Una libreria di date javascript leggera per l'analisi, la manipolazione e la formattazione delle date". È una piccola libreria davvero potente.

Ecco un esempio ...

var today = moment(new Date()); 
today.format("MMMM D, YYYY h:m A");  // outputs "April 11, 2012 2:32 PM" 

// in one line... 
moment().format("MMMM D, YYYY h:m A");  // outputs "April 11, 2012 2:32 PM" 

Ecco un altro esempio ...

var a = moment([2012, 2, 12, 15, 25, 50, 125]); 
a.format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Monday, March 12th 2012, 3:25:50 pm" 
a.format("ddd, hA");      // "Mon, 3PM" 
a.format("D/M/YYYY");      // "12/3/2012" 

Inoltre, la sua pena ricordare alla cassa date.js. Penso che le due librerie si completino a vicenda.

0

vi consiglio il MomentJS con questo Plugin che consentono di convertire un modello Java ad un modello JS (MomentJS)