Código de JavaScript - Convierte una fecha en formato español a ingles

Imágen de perfil

Convierte una fecha en formato español a inglesgráfica de visualizaciones


JavaScript

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 07 de Febrero del 2013 por Xavi
15.933 visualizaciones desde el 07 de Febrero del 2013. Una media de 84 por semana
Código que recibe un fecha en formato español (dd/mm/aaaa), y la devuelve el formato ingles (aaaa/mm/dd) si esta es correcta, o un objeto fecha. Incluye función para validar si la fecha es correcta.

Versión 1
estrellaestrellaestrellaestrellaestrella(1)

Publicado el 07 de Febrero del 2013gráfica de visualizaciones de la versión: Versión 1
15.934 visualizaciones desde el 07 de Febrero del 2013. Una media de 84 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
    /**
     * Funcion que devuelve true o false dependiendo de si la fecha es correcta.
     * Tiene que recibir el dia, mes y año
     */
    function isValidDate(day,month,year)
    {
        var dteDate;
 
        // En javascript, el mes empieza en la posicion 0 y termina en la 11
        // siendo 0 el mes de enero
        // Por esta razon, tenemos que restar 1 al mes
        month=month-1;
        // Establecemos un objeto Data con los valore recibidos
        // Los parametros son: año, mes, dia, hora, minuto y segundos
        // getDate(); devuelve el dia como un entero entre 1 y 31
        // getDay(); devuelve un num del 0 al 6 indicando siel dia es lunes, 
        // martes, miercoles ...
        // getHours(); Devuelve la hora
        // getMinutes(); Devuelve los minutos
        // getMonth(); devuelve el mes como un numero de 0 a 11
        // getTime(); Devuelve el tiempo transcurrido en milisegundos desde el
        // 1 de enero de 1970 hasta 
        // el momento definido en el objeto date
        // setTime(); Establece una fecha pasandole en milisegundos el valor de esta.
        // getYear(); devuelve el año
        // getFullYear(); devuelve el año
        dteDate=new Date(year,month,day);
 
        //Devuelva true o false...
        return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
    }
 
    /**
     * Funcion que recibe una fecha en formato español "21/01/2013" y la devuelve
     * en formato ingles "2013/01/21"
     * Tiene que recibir:
     *  - fecha en formato español (21/01/2013)
     *  - formato de respuesta:
     *      1 - fecha en formato cadena
     *      2 - objeto fecha
     * Devuelve vacio si la fecha es erronea
     */
    function convertDateEsToEn(dateEs,formatReturn)
    {
        var patron=new RegExp("^([0-9]{1,2})([/])([0-9]{1,2})([/])(19|20)+([0-9]{2})$");
 
        // Validamos que la fecha sea correcta en el formato español segun
        // la expresion regular
        if(dateEs.search(patron)==0)
        {
            values=dateEs.split("/");
            // Revisamos que la fecha sea correcta
            if(isValidDate(values[0],values[1],values[2]))
            {
                // devuelve la fecha en formato ingles
                if(formatReturn==2)
                {
                    // puedes devolver un objeto fecha para trabajar con el
                    return new Date(values[2],(parseInt(values[1])-1),values[0]);
                }else{
                    // puedes devolver simplemente la fecha en formato cadena
                    return values[2]+"/"+values[1]+"/"+values[0];
                }
            }
        }
        return "";
    }
</script>
</head>
 
<body>
<div>
    Indica una fecha en formato (dd/mm/yyyy): <input type="text" size="12" maxlenght="10" onkeyup="document.getElementById('dateEN').innerHTML=convertDateEsToEn(this.value,2);">
</div>
<div>Fecha en formato (yyyy/mm/dd): <span id="dateEN"></span></div>
</body>
</html>



Comentarios sobre la versión: Versión 1 (1)

Peter
06 de Febrero del 2015
estrellaestrellaestrellaestrellaestrella
Una cuestión: si JavaScript devuelve el mes de 0 a 11, lo lógico no sería sumar uno al mes para que nos devuelva el mes correcto?
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s2296