Как получить: настройка часового пояса FTP-сервера?

Я использую функцию FTP_RAWLIST PHP для получения списка файлов и связанных с ними последних изменений даты/времени. Для моих целей мне нужно знать часовой пояс (или смещение) последней измененной даты/времени. Только даты / время бесполезны для меня, поскольку мне нужно преобразовать их в UTC.

есть ли в любом случае, чтобы выяснить, что такое настройка часового пояса FTP-сервера?

3 ответов


в стандарте FTP нет способа определить часовой пояс удаленного сервера.

Если у вас есть разрешения на запись на FTP-сервер, я думаю, вы можете загрузить файл, а затем рассчитать разницу между временем файла, сообщенным FTP и локально.


попробуйте определить часовой пояс в начале вашего php-кода. Пример: меня("сет"); Для меня это решение работало, поскольку оно автоматически преобразовывало время сервера из другого часового пояса в нужный.


недавно у меня была такая же проблема. Мой подход состоял в том, чтобы создать папку в корне под названием /time, а затем прочитать ее и проверить дату создания папок. Тогда я мог бы установить разницу во времени между моим ftp-клиент и сервер. Надеюсь, это поможет.

кстати, я использую 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;
}