Foros del Web » Programando para Internet » PHP »

Formatear fechas de un idioma a otro

Estas en el tema de Formatear fechas de un idioma a otro en el foro de PHP en Foros del Web. Hola a todos... Tengo fechas en alemán, por ejemplo así "17 Dez 1850", y debo pasarlas a formato númerico en Inglés, para que, el el ...
  #1 (permalink)  
Antiguo 25/12/2017, 17:53
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Formatear fechas de un idioma a otro

Hola a todos...

Tengo fechas en alemán, por ejemplo así "17 Dez 1850", y debo pasarlas a formato númerico en Inglés, para que, el el caso del ejemplo, quede así: "1850-12-17".

Por favor... ¿me pueden orientar con qué se hace y dónde leerlo?
  #2 (permalink)  
Antiguo 25/12/2017, 20:07
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Formatear fechas de un idioma a otro

preguntas: Donde estan las fechas? en una base de datos??, que formato tienen en tu base?? o estan en tro formato u archivo?? como las estas leyendo o recuperando?? sin esas respuestas es complicado saber como ayudarte
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 25/12/2017, 20:17
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Formatear fechas de un idioma a otro

Me sumo completamente a x

Pero a GRANDES rasgos, puede ser esto:


Código PHP:
Ver original
  1. $date2convert = "17 Dez 1850";
  2. $dictionary = array("jan", "feb", "mär", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "dez");
  3.  
  4.  
  5. $date = split(" ", $date2convert);
  6. $d = $date[0];
  7. $m = array_search(strtolower($date[1]), $dictionary)+1;
  8. $y = $date[2];
  9.  
  10. $newDate = "$y-$m-$d";

Saludos

Última edición por alvaro_trewhela; 25/12/2017 a las 20:47
  #4 (permalink)  
Antiguo 26/12/2017, 05:09
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Formatear fechas de un idioma a otro

Hola xfxstudios y alvaro_trewhela, gracias por ayudarme...

Pongo como lo solucione, y explico lo que tendría que haber explicado antes.

La fecha en alemán la extraigo de la lectura linea por linea con "explode", y dentro de un "foreach", a un archivo txt que utiliza como separador "|"

Código PHP:
$lineas file('nombre_archivo_txt');
foreach (
$lineas as $linea_num => $linea)
{
    
$datos explode("|",$linea);
    
$traveldate_txt $datos[13]; //variable que contiene la fecha en alemán
    
        
if($traveldate_txt '0'){
            
$value $traveldate_txt;
            
$tempdate $value;
            
            
$tempdate str_replace(' Januar ''-01-'$tempdate);
            
$tempdate str_replace(' Februar ''-02-'$tempdate);
            
$tempdate str_replace(' Mär ''-03-'$tempdate);
            
$tempdate str_replace(' April ''-04-'$tempdate);
            
$tempdate str_replace(' Mai ''-05-'$tempdate);
            
$tempdate str_replace(' Juni ''-06-'$tempdate);
            
$tempdate str_replace(' Juli ''-07-'$tempdate);
            
$tempdate str_replace(' August ''-08-'$tempdate);
            
$tempdate str_replace(' September ''-09-'$tempdate);
            
$tempdate str_replace(' Oktober ''-10-'$tempdate);
            
$tempdate str_replace(' November ''-11-'$tempdate);
            
$tempdate str_replace(' Dezember ''-12-'$tempdate);
            
            
$tempdate = new DateTime($tempdate);
            echo 
$tempdate->format("Y-m-d");
        }

Curiosamente, y no se por que sucede, si no pongo el mes entero en alemán, me imprime siempre como año el actual (2017). Es decir, si la fecha en alemán es por ej. "29 Juni 1850", y yo en el "str_replace" pongo el mes abreviado "Jun", me imprime como año: 2017. En cambio, poniendo el mes de forma entera, ya sea que la fecha en alemán venga con el mes abreviado o no, siempre imprime el año correctamente.

A esta solución he llegado sacando un poco de aquí y de allá, y haciendo pruebas varias (ensayo - error). Tal vez hay una manera más facil y más correcta... pero bueno, es lo que pude lograr!!!

Gracias nuevamente a los dos por ayudarme!!!
  #5 (permalink)  
Antiguo 26/12/2017, 08:16
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Formatear fechas de un idioma a otro

Muy bien, en cuanto a la curiosidad es porque como el parámetro está o incomplento la conversión no se lleva acabo por lo que se mantiene el time actual
  #6 (permalink)  
Antiguo 26/12/2017, 08:22
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Formatear fechas de un idioma a otro

Perfecto alvaro_trewhela... muchas gracias!!!

Etiquetas: formatear, idioma
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 17:22.