Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертация ftp даты 
:(
    Опции темы
CHERRY
Дата 24.2.2014, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Прохожий
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 17.6.2002
Где: Одесса

Репутация: нет
Всего: -2



Используется FtpClient из библиотеки ICS
Информация о каталоге(файле) возвращается в виде строки вида:
'drwxr-xr-x    9 0        0            4096 Jan 16 15:28 BBerry'
'drwx------    2 root     root        16384 Aug 12  2013 lost+found'

Видим, что дата имеет вид: Jan 16 15:28 или Aug 12  2013.
Как преобразовать дату к TDateTime?
Спасибо.
--------------------
Трясу надежды ветвь, но где желанный плод?
PM MAIL WWW   Вверх
Poseidon
Дата 1.3.2014, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Если Delphi XE3 или более поздние версии, то сработает. В ранних не гарантирую (не помню просто где появилось TFormatSettings.

Код

function GetMonthNumberOfName(Month: string; FormatSettings: TFormatSettings): Word;
var
  i: Word;
begin
  if Month.IsEmpty then
    Exit(0);

  for i := 1 to 12 do
    if SameText(FormatSettings.ShortMonthNames[i], Month) then
      Exit(i);
end;

function GetDateTime(FtpDate: string): TDateTime;
var
  FormatSettings: TFormatSettings;
  MonthNumber: Word;
begin
  FormatSettings := TFormatSettings.Create('en-US');

  MonthNumber := GetMonthNumberOfName(Copy(FtpDate, 1, 3), FormatSettings);
  FtpDate := IntToStr(MonthNumber) + '/' + Copy(FtpDate, 5, 8);

  FormatSettings.LongDateFormat := 'mm/dd hh:nn';     // <-- Тут указываем формат даты в входной строке
  TryStrToDateTime(FtpDate, Result, FormatSettings);
end;


Почему-то не хочет TFormatSettings понимать "Jan" при формате "mmm", хотя тот же "Jan" возвращает в ShortMonthNames[1]. Поэтому и пришлось ввести GetMonthNumberOfName которая конвертирует "Jan" в 1 и т.д.

Это сообщение отредактировал(а) Poseidon - 1.3.2014, 22:34


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
kami
Дата 2.3.2014, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(Poseidon @  1.3.2014,  22:28 Найти цитируемый пост)
Почему-то не хочет TFormatSettings понимать "Jan" при формате "mmm"

TFormatSettings может и хотело бы, но (по крайней мере в D2010) TryStrToDate считает, что первым параметром должно быть число, а находит строковый символ и сразу вылетает...

Добавлено через 3 минуты и 38 секунд
Кстати, как-то хотел это дело поправить, но руки не дошли...

Добавлено через 5 минут и 26 секунд
Upd: а не может такая функция быть где-нибудь в сетевых компонентах?
В ICS поискал, не нашел. Может у индейцев или синапсов?

Это сообщение отредактировал(а) kami - 2.3.2014, 20:30
PM MAIL WWW   Вверх
CHERRY
Дата 3.3.2014, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Прохожий
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 17.6.2002
Где: Одесса

Репутация: нет
Всего: -2



Спасибо за внимание. У меня D2010. Я уж подумывал раздраконить все руками. Описать месяцы, если года нет- значит текущий, правда время не везде присутствует. Но это как-то не правильно. ICS серьезный пакет, а такая мелочь не учтена? Вряд ли. Думал может кто глубже копнул. Я тут на днях поковырял SecureBlackbox, в частности SimpleSFTPClient. Там все красиво. Ftp-строка парсится, дата/время без проблем. Очень красиво. Но стоит денег. Для души не купишь.
--------------------
Трясу надежды ветвь, но где желанный плод?
PM MAIL WWW   Вверх
CHERRY
Дата 27.3.2014, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Прохожий
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 17.6.2002
Где: Одесса

Репутация: нет
Всего: -2



P.S.
Случайно вернулся к этой теме и порешал задачу так:
Код


................................
procedure DisplayHandler(Sender : TObject; var Msg : String);
..............................
Var fMessage:String;
................................

FTPClient.OnDisplay:=DisplayHandler;
................................

procedure TFilesPanel.DisplayHandler(Sender : TObject; var Msg : String);
begin
  //Display(Msg);процедура, где все команды выводятся например в Мемо
  fMessage:=Msg;
end;


// Получить дату модификации файла
function  TFilesPanel.FtpGetFileDate(FullFileName:String):String;
Var sDate,Y,M,D,H,min,sec:String;
begin
 if not FtpClient.Connected then FtpClient.Connect;
 FtpClient.HostDirName := путь к директории, где лежит файл;
 FtpClient.HostFileName := имя файла;
 FtpClient.Cwd;
 FtpClient.Feat;//включает расширенные функции (я так думаю)
 FtpClient.Mdtm;
 //fMessage='< 213 20140326123426', где 20140326123426 - дата в формате "YYYYMMDDhhmmss"
 sDate:=fMessage;
 Delete(sDate,1,Pos('213 ',sDate)+3);
 Y  := Copy(sDate,1,4); Delete(sDate,1,4);
 M  := Copy(sDate,1,2); Delete(sDate,1,2);
 D  := Copy(sDate,1,2); Delete(sDate,1,2);
 H  := Copy(sDate,1,2); Delete(sDate,1,2);
 min:= Copy(sDate,1,2); Delete(sDate,1,2);
 sec:= sDate;
 Result:=D+'.'+M+'.'+Y+' '+H+':'+min+':'+sec;
end;



Мне все это не очень нравится, но работает четко. Правда только для файлов.
--------------------
Трясу надежды ветвь, но где желанный плод?
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0872 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.