2010-07-14 9 views
7

Uso la funzione ftp_rawlist di PHP per ottenere un elenco di file e la loro data/ora dell'ultima modifica associata. Per i miei scopi, ho bisogno di conoscere il fuso orario (o l'offset) della data/ora dell'ultima modifica. Le date/ore da solo sono inutili per me in quanto ho bisogno di convertirli in UTC.COME OTTENERE: Impostazione del fuso orario del server FTP?

Esiste comunque la possibilità di determinare l'impostazione del fuso orario del server FTP?

+0

prova tramite il comando ftp_exec per eseguirlo :) http://www.php.net/manual/en/function.ftp-exec.php –

+0

Quale comando devo eseguire per ottenere l'impostazione del fuso orario? – StackOverflowNewbie

risposta

8

Non esiste alcun modo definito nello standard FTP per determinare il fuso orario del server remoto.

Se si dispone di autorizzazioni di scrittura per il server FTP, suppongo che è possibile caricare il file e quindi calcolare la differenza tra il tempo di file segnalato da FTP e localmente.

+0

Credo che Dreamweaver utilizzi questo metodo. – Brad

+0

Dannazione ... Questo è l'approccio che avrei provato, ma speravo che ci sarebbe stata una soluzione migliore. Grazie. –

+0

Ma in questo modo non è possibile ottenere informazioni sull'ora legale se si desidera essere precisi. – gumik

-3

La data in cui i file contengono già il fuso orario. La libreria che sto usando per ottenere l'ultima data/ora modificata (edtFTPNet) lo considera e restituisce l'ora della data convertita all'ora del sistema locale. Supporrei che altre biblioteche facessero la stessa cosa.

+0

Non vero. La data/ora come restituita da un server FTP non contiene alcuna indicazione del fuso orario del server. –

0

Prova a definire il fuso orario all'inizio del codice php. Esempio: date_default_timezone_set ("CET"); Per me questa soluzione ha funzionato in quanto ha convertito automaticamente il tempo del server da un fuso orario diverso a quello desiderato.

0

Recentemente ho avuto lo stesso problema. Il mio approccio era quello di creare una cartella nella radice chiamata/ora e quindi leggerla di nuovo e controllare la data di creazione delle cartelle. Potrei quindi stabilire la differenza di orario tra il mio client ftp e il server. Spero che questo ti aiuti.

BTW sto 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; 
}