Foros del Web » Programación web » Javascript »

fecha extraída de un CURP a formato YYYY-MM-DD

Estas en el tema de fecha extraída de un CURP a formato YYYY-MM-DD en el foro de Javascript en Foros del Web. Hola gente. Soy muy malo en JavaScript. Básicamente lo que quiero es extraer la fecha de nacimiento de una CURP (Clave Única de Registor Poblacional, ...
  #1 (permalink)  
Antiguo 20/09/2007, 15:54
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 11 años, 3 meses
Puntos: 9
fecha extraída de un CURP a formato YYYY-MM-DD

Hola gente.

Soy muy malo en JavaScript.
Básicamente lo que quiero es extraer la fecha de nacimiento de una CURP (Clave Única de Registor Poblacional, todos los mexicanos tenemos una) y mostrarla en formato de YYYY-MM-DD.

Hasta ahora lo que llevo es sacar la fecha usando un "substring":

Código:
<!--
var miCurp = "XXXX950807MSPJRN01";
var miNacimiento = miCurp.substring(4,10);
document.write(miNacimiento);
//Devuelve 950807
//-->
Lo que quiero es ver si usando el objeto date o algo así puedo formatear la fecha de este modo: 1995-08-07

Debe tomarse en cuenta que si tengo una cadena como 020425 debe quedar como 2002-04-25 (no como 1902-04-25).

Por último me gustaría asignar ese valor a una variable de PHP, cosa que tampoco sé como se hace. Si es tema de otro foro, no hay bronca, pero si alguien lo sabe, pues igual matamos dos pájaros de un tiro

Gracias de antemano.
Espero haberme explicado claramente.
  #2 (permalink)  
Antiguo 21/09/2007, 19:35
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 10 años, 9 meses
Puntos: 44
Re: fecha extraída de un CURP a formato YYYY-MM-DD

Hola Escoffie:

He creado una función, dale el visto bueno:
Código:
function curp2date(curp) {
	var m = miCurp.match( /^\w{4}(\w{2})(\w{2})(\w{2})/ );
	//miFecha = new Date(año,mes,dia) 
	var anyo = parseInt(m[1],10)+1900;
	if( anyo < 1950 ) anyo += 100;
	var mes = parseInt(m[2], 10)-1;
	var dia = parseInt(m[3], 10);
	return (new Date( anyo, mes, dia ));
}
Te devuelve un objeto Date() dado un string con tu CURP.

Luego ya si lo quieres imprimir en la página con el formato que quieras puedes sobreescribir el método toString() de Date():
Código PHP:
Date.prototype.toString = function() {
    var 
anyo this.getFullYear();
    var 
mes this.getMonth()+1;
    if( 
mes<=mes "0"+mes;
    var 
dia this.getDate();
    if( 
dia<=dia "0"+dia;
    return 
anyo+"-"+mes+"-"+dia;

Y ya sólo quedaría un ejemplo completo:
Código:
var miCurp = "XXXX970807MSPJRN01";

function curp2date(curp) {
	var m = miCurp.match( /^\w{4}(\w{2})(\w{2})(\w{2})/ );
	//miFecha = new Date(año,mes,dia) 
	var anyo = parseInt(m[1],10)+1900;
	if( anyo < 1950 ) anyo += 100;
	var mes = parseInt(m[2], 10)-1;
	var dia = parseInt(m[3], 10);
	return (new Date( anyo, mes, dia ));
}

Date.prototype.toString = function() {
	var anyo = this.getFullYear();
	var mes = this.getMonth()+1;
	if( mes<=9 ) mes = "0"+mes;
	var dia = this.getDate();
	if( dia<=9 ) dia = "0"+dia;
	return anyo+"-"+mes+"-"+dia;
}

document.write( curp2date(miCurp) );


Para pasarlo a PHP necesitas enviar un formulario de tu página, o utilizar AJAX, que es un método más transparente pero un poco más complicado.


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 22/09/2007, 09:47
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 11 años, 3 meses
Puntos: 9
Re: fecha extraída de un CURP a formato YYYY-MM-DD

Muy estimado derkenuke:

Funcionó de maravilla. Lo he probado con 70 CURPs diferentes y ha respondido justo como se esperaba.
Te agradezco verdaderamente. Esperaba que me dieran algo de dirección, pero llegaste y me resolviste el problema. En verdad lo agradezco.

De verdad que aprendiendo expresiones regulares se pueden hacer maravillas, pero me dan miedo, ¡jejeje!

Saludos!
  #4 (permalink)  
Antiguo 22/09/2007, 10:12
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 10 años, 9 meses
Puntos: 44
Re: fecha extraída de un CURP a formato YYYY-MM-DD

Así es un placer
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #5 (permalink)  
Antiguo 11/08/2009, 12:41
 
Fecha de Ingreso: agosto-2009
Mensajes: 2
Antigüedad: 4 años, 11 meses
Puntos: 0
Sonrisa Respuesta: Re: fecha extraída de un CURP a formato YYYY-MM-DD

Esta chido si lo haces desde java/script
pero si lo haces de esta forma
Imagina te que tienes una base de datos y que de esa base una tabla y de esa tabla un campo llamado curp.
y en una de esas tu jefe te dice quiero la fecha de nacimiento y tu..kee!!! si en ningun momento la capture
Eureka....!!! tienes la curp
de ahi la puedes obtener y se haria de esta forma


function fechaNac($curp,&$fechaNac)
{
$anyoCurp=substr($curp,4,2);
$mesCurp=substr($curp,6,2);
$diaCurp=substr($curp,8,2);
$anyoCurp=(int)$anyoCurp;
$anyoCurp= $anyoCurp + 1900;
if($anyoCurp < 1909)
{
$anyoCurp = $anyoCurp + 100;
}
$fechaNac=$diaCurp."/".$mesCurp."/".$anyoCurp;
return $fechaNac;
}
$Curp="XXXX010509XXXXXXXX";
fechaNac($curp,&$fechaNac)
Y ya usas la variable
($fechaNac......)
ACUERDATE QUE LA CURP TIENE 18 DIGITOS

Ya que si lo que quiere el jefe es la edad seria asi

function sb($curp,$anyoNac)
{
if(strlen($curp)!=18)
{
$smg="La curp no esta escrita correctamente <br>$curp";
$anyoNac=$smg;
return $anyoNac;
exit;
}

$anyoCurp=substr($curp,4,2);
$anyoActual=date("Y");
$anyoNac=(int)$anyoCurp;
$anyoActual=(int)$anyoActual;
$anyoNac= $anyoNac + 1900;

if($anyoNac < 1909)
{
$anyoNac = $anyoNac + 100;
}

return $anyoNac;
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:27.
SEO by vBSEO 3.3.2