2010-07-14 26 views
7

Estoy usando la función ftp_rawlist de PHP para obtener una lista de archivos y su fecha/hora asociada de última modificación. Para mis propósitos, necesito saber la zona horaria (o desplazamiento) de la fecha/hora de la última modificación. Las fechas/horas solas son inútiles para mí, ya que necesito convertirlas a UTC.CÓMO OBTENER: Configuración de la zona horaria del servidor FTP?

¿Hay alguna forma de averiguar cuál es la configuración de la zona horaria del servidor FTP?

+0

intento a través de comandos ftp_exec para ejecutarlo :) http://www.php.net/manual/en/function.ftp-exec.php –

+0

Qué hacer yo mando ejecutar para obtener la configuración de zona horaria? – StackOverflowNewbie

Respuesta

8

No hay ninguna manera definida en el estándar FTP para determinar la zona horaria del servidor remoto.

Si tiene permisos de escritura en el servidor FTP, supongo que puede cargar el archivo y luego calcular la diferencia entre la hora del archivo indicada por FTP y localmente.

+0

Creo que Dreamweaver usa este método. – Brad

+0

Maldición ... Ese era el enfoque que iba a intentar, pero esperaba que hubiera una mejor solución. Gracias. –

+0

Pero de esta manera no puede obtener información sobre el horario de verano si quiere ser súper preciso. – gumik

-3

La fecha y hora de los archivos mismos ya contienen la zona horaria. La biblioteca que estoy utilizando para obtener la última fecha/hora modificada (edtFTPNet) considera eso y devuelve la fecha y hora convertida a la hora de su sistema local. Yo asumiría que otras bibliotecas harían lo mismo.

+0

No es cierto. La Fecha/Hora tal como se devuelve desde un servidor FTP no contiene ninguna indicación de la zona horaria del servidor. –

0

Trate de definir su zona horaria al comienzo de su código php. Ejemplo: date_default_timezone_set ("CET"); Para mí, esta solución funcionó ya que convirtió automáticamente el tiempo del servidor de una zona horaria diferente a la deseada.

0

Recientemente tuve el mismo problema. Mi enfoque era crear una carpeta en la raíz llamada/hora y luego volver a leerla y verificar la fecha de creación de las carpetas. Podría establecer la diferencia horaria entre mi cliente ftp y el servidor. Espero que esto ayude.

Por cierto estoy usando https://github.com/ArxOne/FTP

// Establish a fallback 
var servertime = DateTime.Now; 
try 
{ 
    // query for the existance of a time folder 
    var timefolder = ftpClient.ListEntries("/").FirstOrDefault(o => o.Name == "time"); 
    // delete it if found 
    if (timefolder != null) 
    { 
     ftpClient.Delete("/time"); 
    } 
    // if not found create one 
    ftpClient.Mkd("/time"); 
    timefolder = ftpClient.ListEntries("/").FirstOrDefault(o => o.Name == "time"); 
    if (timefolder == null) 
    { 
     Logger.Fatal("Time check failed"); 
     return; 
    } 
    // now grab the time of the folder. 
    servertime = timefolder.Date; 
} 
catch (Exception x) 
{ 
    Logger.Fatal(x,"Time check fatal error"); 
    return; 
} 
Cuestiones relacionadas