Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перевод даты в строгу с заданым форматом


Opilki_Inside ©   (2006-01-30 16:30:00) 

Всем привет!
В делфях есть функция DateFormat, которая переводит дату в строку с заданым форматом...

А есть ли обратная функция, что бы в качестве аргументов я бы передавал строку, и формат в котором она находится?

Т.е. у меня есть строка
051022   и формат yymmdd   нужно на выходе получить тип TData со значением 22 октября 2005

с FormatSettings такого не получилось, а гемороя не хочется:(


Opilki_Inside   (2006-01-30 18:27:00) [1]

Yanis, не верно.
Я сначала написал про функцию DateFormat , и в нее передается именно формат! (format), а не установки (format settings). А в StrToDate передаются именно format settings. И искал я функцию обратную, DateFormat.

Да я же тебе объяснил что написать парсер - не проблема, думал что существует стандартная функция. Ну раз ее не существует то так и нужно было сказать, а не тыкать носом в функцию с которой это и так не получится.


Opilki_Inside   (2006-01-30 18:27:00) [2]

Yanis, не верно.
Я сначала написал про функцию DateFormat , и в нее передается именно формат! (format), а не установки (format settings). А в StrToDate передаются именно format settings. И искал я функцию обратную, DateFormat.

Да я же тебе объяснил что написать парсер - не проблема, думал что существует стандартная функция. Ну раз ее не существует то так и нужно было сказать, а не тыкать носом в функцию с которой это и так не получится.


begin...end   (2006-01-30 18:20:00) [3]

> Opilki_Inside

Я могу ещё раз сказать, что в строку нужно вставить DateSeparator.

var
 FS: TFormatSettings;
 DT: TDateTime;
 S: string;
begin
 GetLocaleFormatsettings(LOCALE_USER_DEFAULT, FS);
 FS.ShortDateFormat := 'yymmdd';
 FS.TwoDigitYearCenturyWindow := 50;
 S := '05.10.22';
 DT := StrToDateTime(S, FS)
end


Yanis   (2006-01-30 18:13:00) [4]

2 [6]
Ты писал

> А есть ли обратная функция, что бы в качестве аргументов
> я бы передавал строку, и формат в котором она находится?

Я ответил:

> Есть такая функция. StrToDate называется.

Разве не верно?
Да тут даже переводить не нужно. Если формат фиксированный, то третьему и четёртому символу (т.е. числу, в твоём случае 10) ставить в соответсвие название месяца. Это проще чем вставлять разделители и использовать стандартныефункции.


Opilki_Inside   (2006-01-30 18:05:00) [5]

Yanis
>А ты ещё разок попробуй.

Yanis, я же сказал что через FormatSettings не получилось. неужели не ясно? В строке с датой какой-то сепаратор должен быть по любому.
А если у тебя получилось - то напиши, если конечно, тебе не жалко...

Yanis, ты вопрос вообще читал? Про StrToDate и так все знают

Дело не втом что мне служно написать функцию распарсивания этой даты, я уже давно ее написал. Дело в подходе, можно все функции заново написать... только стандартные функции работают как-то по надежнее и не нужно с собой самодельных таскать


Yanis   (2006-01-30 17:19:00) [6]


> что бы в качестве аргументов я бы передавал строку, и формат
> в котором она находится?

Есть такая функция. StrToDate называется.


> с FormatSettings такого не получилось

А ты ещё разок попробуй.


> а гемороя не хочется:(

Тогда иди пивка попей.


Ega23   (2006-01-30 17:17:00) [7]


> нее... ну не совсем... есть текстовый файл, в нем дата в
> формате yymmdd нужно ее от туда изъять и перевести в ISO,
>  для дальнейшей загрузки в БД
>


Ну, если формат даты в файле фиксированный, то, думаю, тебе не составит труда его распарсить так, как надо.


begin...end   (2006-01-30 17:15:00) [8]

По крайней мере, DateSeparator в строку придётся вставить.


Opilki_Inside   (2006-01-30 17:13:00) [9]

нее... ну не совсем... есть текстовый файл, в нем дата в формате yymmdd нужно ее от туда изъять и перевести в ISO, для дальнейшей загрузки в БД


Ega23   (2006-01-30 17:05:00) [10]

Тебе, поди, для БД надо?


Наверх

Титульная страница Поиск, карта сайта Написать письмо