2009-06-17 28 views
30

Me gustaría poder convertir una cadena de formato de fecha Java, p. Ej. dd/MM/aaaa (06/07/2009) a una cadena de formato de fecha de JavaScript, p. dd/mm/aa (06/07/2009).Formato de fecha de Java a formato de fecha de JavaScript

¿Alguien ha hecho esto antes, o tiene alguna idea de dónde podría encontrar algún código que ya lo haga?

Gracias de antemano.

Editar:

Gracias por todas las respuestas, pero ahora me doy cuenta de mi error y, posiblemente, por la que muchos de ustedes estaban luchando para entender la cuestión; JavaScript no tiene una capacidad de formateo de fechas incorporada. Estoy usando el jQuery UI datepicker y he estado configurando su formato de fecha, ¡suponiendo que llamaría a una función JS estándar en algún momento, sin usar su propia biblioteca! Cuando busqué en Google el formato de las cadenas, salté directamente a las tablas de las letras que podían usarse, omitiendo el bit al principio para explicar cómo usar el script.

De todos modos tendré que seguir adelante y posiblemente escribir el mío Supongo que convertir una cadena de formato de fecha Java en una cadena de formato de fecha jQuery (o lo más cerca posible) - Estoy trabajando en el i18n de nuestro producto y He creado una clase Java que almacena la cadena de formato de fecha preferida utilizada en toda la aplicación, mi intención era también tener la capacidad de proporcionar cualquier jsps con la cadena de formato que es equivalente en JS.

Gracias de todos modos.

+1

"dd/mm/aa (07/06/2009)" No computa, pero no lo editaré porque no estoy seguro de qué es exactamente lo que pretendes. – annakata

+1

¿Podría darnos alguna información sobre cómo está pasando la fecha de Java al código Javascript? p.ej. ¿Lo estás escribiendo usando un JSP? Eso ayudará mucho a responder tu pregunta. –

+1

¿Quizás quiso decir "dd/mm/aa (06/07/09)"? De lo contrario, no entiendo la diferencia entre las dos fechas de muestra que proporcionó. – Nosredna

Respuesta

0

El código de javascript en this page implementa algunas funciones de fecha y "usan las mismas cadenas de formato que la clase java.text.SimpleDateFormat, con algunas excepciones menores". No es exactamente lo que quieres, pero puede ser un buen punto de partida.

2

Un tema ha sido respondida aquí: Converting dates in JavaScript

personalmente he encontrado que esto es un dolor bastante grande y tomó la sugerencia del autor y se utiliza una biblioteca. Como se señaló, jQuery datepicker tiene una que es una solución viable si puede pagar los gastos generales de descarga de su aplicación o si ya la está usando.

+1

Realmente creo que una biblioteca es la manera de seguir esta también. FWIW, dojo tiene uno bueno también. http://docs.dojocampus.org/dojo/date/locale – seth

41

Si solo necesita pasar una fecha de Java a JavaScript, la mejor manera de hacerlo, creo, sería convertir la fecha de Java en milisegundos usando date.getTime(), cree una fecha de JavaScript inicializada con este valor de milisegundos con new Date(milliseconds) y luego formatee la fecha con los medios del objeto Fecha de JavaScript, como: date.toLocaleString().

+1

Tengo un problema similar con Java Date -> Javascript Date -> DatePicker. Esto me ayudó a acercarme mucho más. ¡Gracias! – jjohn

+1

La mejor solución. Resolvió el hecho de que SimpleDateFormat no proporciona un mes basado en cero. – cherouvim

+1

solución más limpia, ya que sólo depende de un dato universalmente disponibles, haciendo que el JS-end fácilmente reutilizable para los clientes que no son Java, así – Angad

0

Si lo que desea es formato de las fechas mis extensiones fecha lo harán bien - que también analiza los formatos de datos y hace un montón de fecha matemáticas/compara así:

DP_DateExtensions Library

No estoy seguro si' Ayudaré, pero lo he encontrado inestimable en varios proyectos.

4

Puedes usar el plugin 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

Qué pasa si mi fecha es en este formato \t \t \t \t // Jul 4, el año 2015 10:45 : 22 AM en lugar de // 2009-12-18 10: 54: 50.546 – Milson

+0

Hola @Milson, jquery-dataFormat también lo admite. Algunos ejemplos: https://github.com/phstc/jquery-dateFormat/blob/master/test/format_date_spec.js#L72 –

0

Esta biblioteca de JavaScript debería ser capaz de ayudarlo.

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

(no sé por qué lo tienen como un plugin de jQuery, ya que funciona de forma independiente.)

te hubiera simplemente dividir la fecha con formato original en sus elementos individuales y luego crear un nuevo objeto de fecha con esos elementos. Luego, use el método "Date.f()" de esta biblioteca para mostrarlo en cualquier formato que desee.

Por ejemplo:

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

Esto funciona muy bien para mí:

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

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

Salida moment.js! Es "Una biblioteca de fechas de javascript liviana para analizar, manipular y formatear las fechas". Es una pequeña biblioteca realmente poderosa.

He aquí un ejemplo ...

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" 

Aquí hay otro ejemplo ...

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" 

Además, vale la pena mencionar a la caja de date.js. Creo que las dos bibliotecas se complementan entre sí.

0

te sugieren el MomentJS con este Plugin que le permiten convertir un patrón de Java a un patrón de JS (MomentJS)